How to change the path to php.ini in PHP CLI version

試著忘記壹切 提交于 2019-12-28 03:48:12

问题


The php that run on the webserver and the CLI version is not using the same php.ini file. If I do a command php --ini, it show this

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)

while my web version uses the php.ini in C:\wamp\bin\apache\Apache2.2.21\bin\php.ini. This is probably very common for people using wamp.

How do I change the Loaded Configuration File to read from C:\wamp\bin\apache\Apache2.2.21\bin\php.ini so I don't have to maintain 2 different php.ini versions?


回答1:


Per http://php.net/configuration.file:

php.ini is searched for in these locations (in order):

  • SAPI module specific location (PHPIniDir directive in Apache 2, -c command line option in CGI and CLI, php_ini parameter in NSAPI, PHP_INI_PATH environment variable in THTTPD)
  • The PHPRC environment variable. Before PHP 5.2.0, this was checked after the registry key mentioned below.
  • As of PHP 5.2.0, the location of the php.ini file can be set for different versions of PHP. The following registry keys are examined in order:
    • [HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x.y.z], [HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x.y] and [HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x], where x, y and z mean the PHP major, minor and release versions. If there is a value for IniFilePath in any of these keys, the first one found will be used as the location of the php.ini (Windows only).
    • [HKEY_LOCAL_MACHINE\SOFTWARE\PHP], value of IniFilePath (Windows only).
  • Current working directory (except CLI).
  • The web server's directory (for SAPI modules), or directory of PHP (otherwise in Windows).
  • Windows directory (C:\windows or C:\winnt) (for Windows), or --with-config-file-path compile time option.

For CLI, your best bet is probably either to set the $PHPRC environment variable for the account that will be executing scripts, or recompile PHP with a different --with-config-file-path configuration setting.

You can also override the php.ini search dir on a per-execution basis by specifying the -c option when invoking PHP:

> php --help
Usage: php [options] [-f]  [--] [args...]
...
  -c | Look for php.ini file in this directory




回答2:


By specifying environment variable PHPRC to point to the same php.ini as the one Apache uses worked for me on Ubuntu

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

Or put it in the $HOME/.bashrc to import every time cli is started




回答3:


I have spent about 3 hours trying to do exactly what your question asks. Couldn't do it. I gave up and copied that php.ini to C:\Windows and changed my ENV variable "PHPRC" to C:\Windows (and in httpd.conf). That way both my CLI php and Apach php e are using the same file. I could not get "php -m" to display the modules I had loaded in my php.ini for the life of me until I made this change...




回答4:


try running the phpinfo() function on both side

Webserver and CLI and find out the exact location of your php.ini file for both side

and maintain those files only




回答5:


I tried and failed with using C:\YourPathto\PHP7\ as my PHPRC Environmental Variable. But it must be set to the full path with filename. I also found that I had to do a full restart for php to pick up the new variable.

  1. On Windows, find the path to your php.ini file and modify and run the following command in a command/terminal window:

    setx PHPRC "C:\YourPathto\PHP7\php.ini"

    You should see SUCCESS: Specified value was saved.

  2. Then restart your computer (really).

Or edit environmental variables through the regular way, then restart:



来源:https://stackoverflow.com/questions/10844641/how-to-change-the-path-to-php-ini-in-php-cli-version

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!