Подтвердить что ты не робот

Как изменить путь к php.ini в версии PHP CLI

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?

4b9b3361

Ответ 1

Per 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\x.y.z], [HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x.y] и [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
Usage: php [options] [-f]  [--] [args...]
...
  -c | Look for php.ini file in this directory

Ответ 2

Указывая переменную среды PHPRC, чтобы указать на тот же php.ini, что и тот, который использует Apache для меня на Ubuntu

export PHPRC=/etc/php5/apache2/php.ini

Или помещайте его в файл $HOME/.bashrc для импорта каждый раз при запуске cli

Ответ 3

Я потратил около 3 часов, пытаясь сделать именно то, о чем спрашивает ваш вопрос. Не мог этого сделать. Я сдался и скопировал этот php.ini в C:\Windows и изменил мою переменную ENV "PHPRC" на C:\Windows (и в httpd.conf). Таким образом, оба моих CLI php и Apach php e используют один и тот же файл. Я не мог получить "php -m", чтобы отображать модули, которые я загрузил в свой php.ini, для жизни меня, пока я не сделал это изменение...

Ответ 4

попробуйте запустить функцию phpinfo() с обеих сторон

Веб-сервер и CLI и узнать точное местоположение вашего файла php.ini для обеих сторон

и поддерживать только эти файлы