- Файл php.ini отсутствует, но php.ini-dist & amp; php.ini-рекомендуемые есть
- Решение
- Нет php.ini, но есть php.ini-development и php.ini-production. Какая между ними разница?
- Установка
- Все о файле php.ini
- Где находится php.ini?
- Как настроить php.ini?
- Общие настройки
- Ограничение ресурсов
- Обработка ошибок и журналы
- Обработка данных
- Загрузка файлов
- Работа с сокетами
- Сессии
- Динамические расширения
- Работа с модулями MySQL
- Если вы создали собственный файл php.ini и поместили его в папке сайта
Файл php.ini отсутствует, но php.ini-dist & amp; php.ini-рекомендуемые есть
Я пытался найти файл php.ini. Я запустил phpinfo (), и местоположение отображается как: C: \ WINDOWS. В папках Windows находятся только файлы php.ini-info и php.ini-рекомендуемые.
Может ли файл находиться в другом месте?
Мне нужно настроить файл, чтобы я мог получить контактную форму на работающем веб-сайте. (Установите настройки SMTP). Версия: PHP 5.0.4 работает на Windows NT.
Если есть другой способ отправить поля контактной формы на электронную почту, я бы подумал об этом.
Решение
Это не обязательно означает, что это погрузка из этого каталога, это просто означает, что это Ищу в этом реж. И там нет такого файла. Не важно, как правило, вы просто скопировать php.ini-recommended в php.ini и редактировать по своему вкусу.
Примечание: полагаться на локальную доставку почты, как правило, очень сложно, особенно для Windows, где обычно нет удобной службы SMTP. Я бы рекомендовал использовать API почтовых сервисов, таких как Mailgun. Это даст вам все виды приятных функций, таких как отчеты и обнаружения отказов.
Версия: PHP 5.0.4 работает на Windows NT.
Э, правда? Это закономерно древнее и почти наверняка полно вопросов безопасности. Возможно, вы захотите обновить / заменить его как можно скорее.
Нет php.ini, но есть php.ini-development и php.ini-production. Какая между ними разница?
Скачал PHP c php.net, распаковал и прописал этот путь в PATH.
В папке с PHP нет php.ini, но есть php.ini-development и php.ini-production.
Они одинаковы. Насколько я понимаю, надо просто переименовать один из них, удалив часть названия, чтобы остался только php.ini. Но который?
И нужно ли предпринимать еще дополнительные действия в связи с этим переименованием — вручную задавать пути к ним где-то и т.д.?
Именно php.ini есть свой отделдьный в XAMPP, но мне надо запускать не только через браузер, а и билдить php-вывод прямо в Sublime Text 3. Поэтому нужно понимать, как настраивать именно «системный» php.
Как правильно поступить?
- Вопрос задан 30 авг. 2020
- 795 просмотров
Не одинаковы, разница в конфигах есть.
просто переименовать один из них, удалив часть названия, чтобы остался только php.ini. Но который?
Да, предполагается, что вы возьмете один из этих файлов как основу для создания собственного php.ini. Если для разработки — берите за основу development. Все равно вам придется внутри что-то менять, по умолчанию там много всего отключено.
И нужно ли предпринимать еще дополнительные действия в связи с этим переименованием — вручную задавать пути к ним где-то и т.д.?
Установка
Этот раздел содержит общие вопросы о том, как производится установка PHP. Дистрибутивы PHP доступны почти для всех операционных систем и веб-серверов.
Для установки PHP, следуйте инструкциям: Установка и настройка.
PHP подобен связующему звену. Это связующее звено для создания хороших веб-приложений путём объединения разрозненных сторонних библиотек в единое целое, через использование интуитивно понятного и простого для изучения языкового интерфейса. Гибкость и сила PHP основана на стабильности и устойчивости, лежащей в основе платформы. Чтобы всё работало, нужна рабочая операционная система, рабочий веб-сервер и рабочие сторонние библиотеки. Но когда хоть что-либо из них перестаёт работать — PHP нуждается в способах быстрого определения причины неполадки и её устранения. И когда вы усложняете базовый фреймворк тем, что не изолируете исполняемые потоки и сегменты памяти, и не предоставляете потокам отдельных изолированных «песочниц» — ослабляется вся PHP-система.
Если вы желаете использовать многопоточный «MPM» — ознакомьтесь с конфигурацией «FastCGI», согласно которой PHP работает в собственном пространстве памяти.
ОС «Unix»/»Windows»: Где искать файл php.ini ?
По умолчанию в Unix он должен быть в /usr/local/lib , который соответствует /lib . Многие захотят изменить этот путь в момент компиляции, используя опцию —with-config-file-path Например, можно написать так:
В ОС «Windows», по умолчанию, путь к файлу php.ini это путь к директории «Windows». Если вы пользуетесь веб-сервером «Apache», php.ini находится по пути: ?\program files\apache group\apache\ . Таким образом, на одном компьютере можно пользоваться несколькими файлами php.ini , соответственно версиям «Apache».
Unix: Я установил PHP, но при каждом открытии какого-либо документа вижу ‘Document Contains No Data’, что это значит?
Это значит, что, возможно, PHP столкнулся с какой-то проблемой и падает в core-dump. Просмотрите логи ошибок сервера, чтобы проверить это, а затем попытайтесь воспроизвести цепочку шагов, приведших к ошибке; например, создав отдельную тестовую программу. И если вы умеете пользоваться ‘gdb’, то это поможет вам получить стек вызовов функций (backtrace) для включения его в отчёт об ошибке, чтобы облегчить выявление причин проблемы разработчикам. Если вы пользуетесь PHP как модулем для Apache, вам может оказаться полезным следующее:
Вновь остановите httpd-процессы
> run -X -f путь_к_httpd.conf
Затем скопируйте URL,вызвавший проблему в браузере
> run -X -f путь_к_httpd.conf
Если будет происходить core dump, gdb сообщит вам об этом
Включите backtrace в ваш отчёт об ошибке. И отправьте по адресу: » https://bugs.php.net/
Если ваш скрипт использует регулярные выражения ( preg_match() и подобные), проверьте, с одинаковыми ли пакетами обработки RegEx скомпилированы PHP и Apache? В случае PHP и Apache 1.3.x это происходит автоматически.
Unix: Я установил PHP используя RPMS, но Apache не обрабатывает PHP-страницы, в чём дело?
Если что вы установили и Apache, и PHP из RPM-пакетов, вам понадобится раскомментировать или добавить некоторые (или, быть может, все) строки из числа следующих, в вашем файле httpd.conf :
Unix: Я пропатчил Apache расширением FrontPage, и теперь PHP не работает. Т.е. PHP несовместим с расширениями Apache FrontPage?
Нет, совместим, но патч FrontPage влияет на структуры Apache, нужные для PHP. Перекомпиляция PHP (команда ‘make clean ; make’) после установки патча может решить проблему.
Unix/Windows: Я установил PHP, но при попытке открыть PHP-файл браузером вижу просто пустой экран.
Выберите в браузере опцию «посмотреть код» и вы, возможно, увидите, ваш PHP-код. Это значит, что Apache не передал ваш скрипт интерпретатору PHP. Значит что-то неправильно с конфигурацией сервера. В этом случае перепроверьте конфигурацию веб-сервера в соответствии с инструкциями по установке PHP.
Unix/Windows: Я установил PHP, но когда пытаюсь посмотреть созданную PHP-страницу через браузер, то получаю ошибку 500.
Что-то пошло не так, когда сервер попытался запустить PHP. Чтобы увидеть возникающую исходную ошибку, в командной строке перейдите в директорию, содержащую исполняемый файл PHP ( php.exe в Windows) и запустите php -i. Если существуют какие-либо проблемы с запуском PHP, вам выведется соответствующая ошибка, которая подскажет вам, что надо исправить. Если вы увидите множество кода HTML (вывод функции phpinfo() ), значит PHP работает нормально, и ваша проблема связана с настройками веб-сервера.
Некоторые операционные системы: Я установил PHP без каких-либо ошибок, но когда пытаюсь запустить Apache, мне выводится ошибка:
Это означает, что проблема не в PHP, а в клиентских библиотеках MySQL. Некоторые из них требуют сборки PHP с опцией —with-zlib. Этот нюанс описан в MySQL FAQ.
Windows: Я установил PHP, но когда пытаюсь открыть страницу скрипта через браузер, получаю ошибку:
Это означает, что PHP не смог ничего вывести в стандартный поток ввода-вывода. Чтобы увидеть возникающую исходную ошибку, в командной строке перейдите в директорию, содержащую исполняемый файл PHP ( php.exe в Windows) и запустите php -i. Если существуют какие-либо проблемы с запуском PHP, вам выведется соответствующая ошибка, которая подскажет вам, что надо исправить. Если вы увидите множество кода HTML (вывод функции phpinfo() ), значит PHP работает нормально.
Когда вы убедились, что PHP нормально работает в командной строке, попробуйте обратиться к скрипту через браузер снова. Если опять возникнет ошибка — это может означать одну из следующих проблем:
- Права на файл вашего скрипта, php.exe , php5ts.dll , php.ini или какого-либо модуля PHP не позволяют анонимному пользователю интернета ISUR_ к ним обратиться.
- Файл скрипта отсутствует (или, возможно, он находится не там, где вы думаете, относительно корневого каталога веб-сервера). Обратите внимание, что в IIS, вы можете отловить эту ошибку, отметив опцию ‘check file exists’ в настройках «script mappings» в Internet Services Manager. Если файл отсутствует, сервер вместо этого вернёт ошибку 404. При этом, также есть дополнительное преимущество. IIS будет производить проверки аутентификации для файла скрипта, необходимые вам, основываясь на разрешениях NTLanMan.
Windows: Я все сделал по инструкции, но PHP и IIS не хотят работать вместе!
Убедитесь, что все пользователи, которым может понадобиться запустить ваш PHP-скрипт, имеют право запускать php.exe ! IIS использует анонимного пользователя, создаваемого во время инсталляции. Этот пользователь должен иметь права на запуск php.exe . Так же, каждый авторизованный пользователь должен иметь права на запуск php.exe . Для IIS4 вы сказать ему, что PHP — это интерпретатор скриптов. Также прочтите этот FAQ.
Когда я запускаю PHP как CGI на IIS, PWS, OmniHTTPD или Xitami, я получаю такую ошибку: Security Alert! PHP CGI cannot be accessed directly. .
Вы должны установить опцию cgi.force_redirect равную 0 . По умолчанию она равна 1 . Убедитесь, что она не закомментирована (с помощью ; ). Как и все опции PHP, она настраивается в php.ini
Так как она по умолчанию равна 1 , критически важно убедиться, что используется именно тот php.ini , который нужен. Читайте этот FAQ для подробностей.
Как я могу понять, что мой php.ini найден и используется? Такое впечатление, что вносимые мною изменения игнорируются.
Для проверки, какой именно php.ini используется, запустите функцию phpinfo() . Где-то вверху будет список с названием Configuration File (php.ini) . Из него вы сможете понять, какой именно php.ini используется. Если указана только директория в PATH , а файл конфигурации не прочитан, то просто скопируйте его в эту директорию. Если php.ini включён PATH — это значит, что он прочитан.
Если php.ini читается и вы запускаете PHP как модуль, то, после внесения изменений в php.ini , необходимо перезагрузить веб-сервер.
Как я могу добавить директорию с PHP в PATH в Windows?
Старт → Панель Управления → Система
Перейдите на вкладку ‘Дополнительно’
Нажмите кнопку ‘Переменные Окружения’
Посмотрите раздел ‘Системные Переменные’
Найдите строку, содержащую переменную PATH
Совершите на ней двойной щелчок мышью
Допишите в конец строки путь к PHP, не забыв добавить перед ним ‘;’ (например ;C:\php )
Замечание: Не забудьте перезагрузиться после описанных выше действий и, после перезагрузки, проверить, что переменная PATH содержит нужный путь.
Есть несколько путей сделать это. Если вы используете Apache, прочитайте следующие инструкции (Apache 1, Apache 2), также вы можете установить системную переменную PHPRC :
Старт → Панель Управления → Система
Перейдите на вкладку ‘Дополнительно’
Нажмите кнопку ‘Переменные Окружения’
Посмотрите раздел ‘Системные Переменные’
Нажмите кнопку ‘Добавить’ и введите ‘PHPRC’ как имя переменной и директорию с php.ini в качестве её значения (например C:\php )
Нажмите ОК и перезагрузите компьютер
Можно ли использовать согласование контента Apache (опция MultiViews) с PHP?
Если ссылки на файлы PHP содержат расширения, то все будет работать отлично. Это FAQ применимо только для случаев, когда ссылки не содержат расширения и вы хотите использовать согласование контента для файлов PHP из URL. В этом случае замените строку AddType application/x-httpd-php .php на:
PHP ограничен работой только с методами GET и POST?
Нет, возможно работать с любыми запросами, например CONNECT. Правильный статус ответа должен будет посылаться функцией header() . Если вам надо, чтобы PHP работать только с методами GET и POST, необходимо сконфигурировать Apache следующим образом:
Все о файле php.ini
Где находится php.ini?
Местонахождение файла php.ini зависит от операционной системы, на которой работает сервер хостинг-провайдера. Чтобы узнать где он находится выполняем 4 простых шага:
- Создаем php-файл (имя может быть любое, но мы берем для примера myphpinfo.php), и добавляем в него следующие строки:
Как настроить php.ini?
Файл php.ini имеет такие правила синтаксиса «директива = значение». Если вы хотите добавлять комментарии (например, в которых указываете на что влияет данная настройка), то делайте после точки с запятой (все, что идет после этого знака не учитывается как команда). Вот пример:
max_execution_time = 40 ; Максимальное кол-во секунд исполнения скрипта
Далее рассматриваем основные настройки, которые можно сделать в файле php.ini:
Общие настройки
PHPengine = On ; Работа PHP-скриптов включена.
short_open_tag = On ; Разрешает упрощенно обрамлять PHP-код тагами
Precision = 12 ; Указывает сколько цифр будет после запятой, у чисел с плавающей точкой.
output_buffering = 4096 ; Автоматически будет включена буферизация вывода, с размером буфера указанным после «равно».
safe_mode = On ; Безопасный режим.
safe_mode_allowed_env_vars = PHP_ ; Разрешает пользователю работать только с переменными окружения, которые начинаются с PHP_. Если эта директива будет пустой (не будет иметь значения), то пользователи смогут изменять любые переменные окружения. Это может очень плохо сказаться на защите сценариев.
safe_mode_protected_env_vars = LD_LIBRARY_PATH ; Запрещает изменять переменные, которые перечисляются через запятую.
disable_functions = ; После знака «равно» нужно через запятую записать функции, которые вы хотите отключить (обычно это делается для безопасности)
disable_classes = ; После знака «равно» нужно через запятую записать классы, вызов которых вы хотите запретить (обычно это делается для безопасности)
Ограничение ресурсов
max_execution_time = 40 ; Максимальное время на выполнение скрипта (в секундах)
max_input_time = 40 ; Максимальное время в секундах, которое дается скрипту может на обработку данных, которые загружаются.
memory_limit = 16M ; Максимум памяти, которые выделяется для работы одного скрипта
Обработка ошибок и журналы
error_reporting = E_ALL | E_ERROR | E_WARNING | E_PARSE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE ; Указывает перечень ошибок, которые можно выводить.
display_errors = On; Разрешает выводить ошибки прямо в браузер (часто используют для удобства отладки).
display_startup_errors = On ; Ошибки появляющиеся при страрте PHP разрешено показывать.
log_errors = On ; Ошибки разрешено записывать в файл журнала.
log_errors_max_len = 1024 ; Максимальное число символов, которое может составлять длинна журнала.
track_errors = On ; Последние сообщение об ошибки сохранится в переменную $php_errormsg
html_errors = On ; Разрешен вывод сообщений об ошибках в HTML.
error_log = filename ; Задается имя журнала ошибок.
Обработка данных
variables_order = «EGPCS» ; Устанавливает порядок, в котором PHP будет регистрировать перменные (E — встроенные переменные, G — GET переменные, P — POST переменные, C — Cookies, S — сессии). Если убрать любую из букв, то работа соответствующих переменных будет блокироваться.
register_globals = On ; Включает возможность для обращения к переменным, которые поступают через GET/POST/Cookie/сессии, как к обычным переменным (например «$имяпеременной»).
register_argc_argv = On ; Разрешено создавать переменные $argv и $argc на основе информации из GET-метода.
post_max_size = 8M ; Устанавливает максимальный объём данных, который может быть принят.
magic_quotes_gpc = On ; Включает автоматическую обработку кавычек, которые поступают через POST/GET/Cookie.
auto_prepend_file = ; Содержимое файлов, указанных в этих директивах, PHP должен обрабатывать соответственно ДО выполнения сценария
auto_append_file = ; Содержимое файлов, указанных в этих директивах, PHP должен обрабатывать соответственно ПОСЛЕ выполнения сценария.
default_mimetype = «text/html» ; Задает кодировку для Content-type. По умолчанию будет использовано text/html без указания кодировки
doc_root = ; Задается корневая папка для PHP-сценариев.
extension_dir = «./» ; Задается папка, в которой будут хранится динамически загружаемые расширения.
Загрузка файлов
file_uploads = On ; Загрузка файлов на сервер разрешена.
upload_tmp_dir = ; Временная директория для файлов, которые загружаются.
upload_max_filesize = 2M ; Устанавливает максимальный размер файла, который можно загрузить.
Работа с сокетами
user_agent=»PHP» ; Задается переменная USER_AGENT, когда происходит подключение через сокет.
default_socket_timeout = 30 ; Максимальное время на прослушивание сокета (секунды).
Сессии
session.save_handler = files ; Уазывает, что информацию о сессиях нужно хранить в файлах
session.save_path = /tmp ; После знака «равно» нужно указать путь к папке в которой будет храниться информация о сессиях (важно чтобы она папка уже существовала)
session.use_cookies = 1 ; Разрешает использование cookie в сессиях
session.name = PHPSESSID ; Указывает на исользование в качестве имени сессии и сессионной cookie — ID сессии
session.auto_start = 0 ; Запрещает инициализировать сессии при начале соединения
session.cookie_lifetime = 0 ; Время жизни сессии («0» — значит, что сессия живет, пока окно браузера не будет закрыто)
session.use_trans_sid = 1 ; Если пользователь отключил cookie, то во всех ссылках будет добавлен ID сессии
Динамические расширения
extension=modulename.extension ; Можно использовать чтобы загружать внешние модули. Для Windows-систем, обычно пишут — extension=msql.dll, а для
UNIX — extension=msql.so
Работа с модулями MySQL
mysql.allow_persistent = On ; Разрешает устойчивые MySQL-соединения.
mysql.max_persistent = -1 ; Задает сколько максимум может быть устойчивых MySQL-соединений. Если указать -1, то это будет значить, что ограничений нет.
mysql.max_links = -1 ; Задает сколько максимум может быть устойчивых MySQL-соединений, и неустойчивых ODBC-соединений. Если указать -1, то это будет значить, что ограничений нет.
mysql.default_port = ; Порт для функции mysql_connect.
mysql.default_socket = ; Имя сокета для локальных соединений MySQL.
mysql.default_host = ; Имя хоста для функции mysql_connect.
mysql.default_user = ; Имя пользователя.
Если вы создали собственный файл php.ini и поместили его в папке сайта
В таком случае, в целях безопасности нужно заблокировать доступ к нему для всех, кроме вас. Для этого необходимо в файле .htaccess прописать такой код:
Но будьте внимательны, т.к. при данных настройках, все директивы (php_value, php_flag и т.д.) касающиеся настроек php через файл .htaccess перестанут работать (будет выдаваться ошибка 500 Internal Server Error).