Php, который запускается на веб-сервере и в версии CLI, не использует один и тот же файл php.ini. Если я сделаю команду php --ini
, она покажет это
Configuration File (php.ini) Path: C:\Windows Loaded Configuration File: C:\wamp\bin\php\php5.3.8\php.ini Scan for additional .ini files in: (none) Additional .ini files parsed: (none)
в то время как моя веб-версия использует php.ini в C:\wamp\bin\apache\Apache2.2.21\bin\php.ini
. Это, вероятно, очень распространено для людей, использующих wamp.
Как изменить загруженный файл конфигурации для чтения из C:\wamp\bin\apache\Apache2.2.21\bin\php.ini
поэтому мне не нужно поддерживать 2 разных версии php.ini?
На http://php.net/configuration.file :
В этих местах (по порядку) выполняется поиск php.ini:
- Специфическое расположение модуля SAPI (директива PHPIniDir в Apache 2, опция командной строки -c в CGI и CLI, параметр php_ini в NSAPI, переменная среды PHP_INI_PATH в THTTPD)
- Переменная среды PHPRC. До PHP 5.2.0 это было проверено после упомянутого ниже раздела реестра.
- Начиная с PHP 5.2.0, расположение файла php.ini может быть установлено для разных версий PHP. Следующие ключи реестра проверяются следующим образом:
- [HKEY_LOCAL_MACHINE \ SOFTWARE \ PHP \ xyz], [HKEY_LOCAL_MACHINE \ SOFTWARE \ PHP \ xy] и [HKEY_LOCAL_MACHINE \ SOFTWARE \ PHP \ x], где x, y и z означают основные, младшие и выпускные версии PHP. Если в любом из этих ключей есть значение для IniFilePath, первое найденное будет использоваться как местоположение php.ini (только для Windows).
- [HKEY_LOCAL_MACHINE \ SOFTWARE \ PHP], значение IniFilePath (только для Windows).
- Текущий рабочий каталог (кроме CLI).
- Каталог веб-сервера (для модулей SAPI) или каталог PHP (иначе в Windows).
- Каталог Windows (C: \ windows или C: \ winnt) (для Windows) или опция -with-config-file-path для компиляции.
Вероятно, для CLI лучше всего установить переменную среды $PHPRC
для учетной записи, которая будет выполнять скрипты, или перекомпилировать PHP с другим параметром --with-config-file-path
.
Вы также можете переопределить каталог поиска php.ini для каждого выполнения, указав параметр -c
при вызове PHP:
> php --help Использование: php [options] [-f] [-] [args ...] ... -c | Найдите файл php.ini в этом каталоге
Указывая переменную среды PHPRC, чтобы указать на тот же php.ini, что и тот, который использует Apache для меня на Ubuntu
export PHPRC=/etc/php5/apache2/php.ini
Или помещайте его в $ HOME / .bashrc для импорта каждый раз, когда запускается cli
Я потратил около 3 часов, пытаясь сделать именно то, о чем спрашивает ваш вопрос. Не мог этого сделать. Я сдался и скопировал этот php.ini в C: \ Windows и изменил мою переменную ENV «PHPRC» на C: \ Windows (и в httpd.conf). Таким образом, оба моих CLI php и Apach php e используют один и тот же файл. Я не мог получить «php -m», чтобы отображать модули, которые я загрузил в свой php.ini, для жизни меня, пока я не сделал это изменение …
попробуйте запустить phpinfo()
с обеих сторон
Webserver и CLI и узнать точное местоположение вашего файла php.ini
для обеих сторон
и поддерживать только эти файлы