Как найти файл php.ini, используемый командной строкой?

Мне нужно включить pdo_mysql в моей среде EasyPhp, поэтому я пошел в файл php.ini и раскомментировал следующую строку:

extension=php_pdo_mysql.dll 

К сожалению, у меня все еще такая же проблема. Я использую CLI, поэтому, полагаю, мне нужно найти файл php.ini, используемый CLI. Как я могу его найти?

Просто запустите php --ini

Вы можете получить полный phpinfo() используя:

 php -i 

И там есть файл php.ini :

 $ php -i | grep 'Configuration File' Configuration File (php.ini) Path => /etc Loaded Configuration File => /etc/php.ini 

В Windows вместо этого find :

 php -i|find/i"configuration file" 
 php --ini 

предоставит вам подробную информацию о пути использования и возможных файлах ini.

Вы можете использовать get_cfg_var ('cfg_file_path') для этого:

Чтобы проверить, использует ли система файл конфигурации, попробуйте получить значение параметра конфигурации cfg_file_path. Если это доступно, используется файл конфигурации.

В отличие от phpinfo (), он скажет, не обнаружил / не использовал php.ini вообще.

 var_dump( get_cfg_var('cfg_file_path') ); 

И вы можете просто установить расположение php.ini . Вы используете версию командной строки, поэтому, используя параметр -c вы можете указать местоположение, например

 php -c /home/me/php.ini -f /home/me/test.php 

Запустите php --ini в своем терминале, вы получите всю информацию о файлах ini

 [root@tamilan src]# php --ini Configuration File (php.ini) Path: /etc Loaded Configuration File: /etc/php.ini Scan for additional .ini files in: /etc/php.d Additional .ini files parsed: /etc/php.d/apc.ini, /etc/php.d/bcmath.ini, /etc/php.d/curl.ini, /etc/php.d/dba.ini, /etc/php.d/dom.ini, /etc/php.d/fileinfo.ini, /etc/php.d/gd.ini, /etc/php.d/imap.ini, /etc/php.d/json.ini, /etc/php.d/mbstring.ini, /etc/php.d/memcache.ini, /etc/php.d/mysql.ini, /etc/php.d/mysqli.ini, /etc/php.d/pdo.ini, /etc/php.d/pdo_mysql.ini, /etc/php.d/pdo_sqlite.ini, /etc/php.d/phar.ini, /etc/php.d/posix.ini, /etc/php.d/sqlite3.ini, /etc/php.d/ssh2.ini, /etc/php.d/sysvmsg.ini, /etc/php.d/sysvsem.ini, /etc/php.d/sysvshm.ini, /etc/php.d/wddx.ini, /etc/php.d/xmlreader.ini, /etc/php.d/xmlwriter.ini, /etc/php.d/xsl.ini, /etc/php.d/zip.ini 

Для получения дополнительной информации используйте команду php --help Он отобразит все возможные варианты.

В некотором смысле все не так, как кажется, когда приходит в конфигурационные файлы в целом. Поэтому здесь я применяю свои обычные методы для изучения того, какие файлы открываются процессом.

Я использую очень мощную и полезную программу командной строки, называемую strace, чтобы показать мне, что действительно происходит за моей спиной!

 $ strace -o strace.log php --version $ grep php.ini strace.log 

Strace выкапывает вызовы ядра (системы), которые ваша программа создает и выгружает вывод в файл, указанный параметром -o

Легко использовать grep для поиска вхождений php.ini в этом журнале. Это довольно очевидно, глядя на следующий типичный ответ, чтобы увидеть, что происходит.

 open("/usr/bin/php.ini", O_RDONLY) = -1 ENOENT (No such file or directory) open("/etc/php.ini", O_RDONLY) = 3 lstat("/etc/php.ini", {st_mode=S_IFREG|0644, st_size=69105, ...}) = 0 

Если вы хотите, чтобы все файлы конфигурации загружались, это скажет вам:

 php -i | grep "\.ini" 

Некоторые системы загружают вещи из более чем одного ini-файла. В моей системе ubuntu это выглядит так:

 $ php -i | grep "\.ini" Configuration File (php.ini) Path => /etc/php5/cli Loaded Configuration File => /etc/php5/cli/php.ini Scan this dir for additional .ini files => /etc/php5/cli/conf.d additional .ini files parsed => /etc/php5/cli/conf.d/apc.ini, /etc/php5/cli/conf.d/curl.ini, /etc/php5/cli/conf.d/gd.ini, /etc/php5/cli/conf.d/mcrypt.ini, /etc/php5/cli/conf.d/memcache.ini, /etc/php5/cli/conf.d/mysql.ini, /etc/php5/cli/conf.d/mysqli.ini, /etc/php5/cli/conf.d/pdo.ini, /etc/php5/cli/conf.d/pdo_mysql.ini 

Если вам нужно передать его в другое приложение, вы можете сделать что-то вроде:

 php --ini | grep Loaded | cut -d" " -f12 

возвращает только путь. php -c $(php --ini | grep Loaded | cut -d" " -f12) будет передаваться в файле конфигурации (полезно для fpm )

В OSX Mavericks работает:

 $ php -i | grep 'Configuration File' 

Возвращается:

 Configuration File (php.ini) Path => /etc Loaded Configuration File: (none) 

В каталоге /etc/ было:

 php.ini.default 

(а также php-fpm.conf.default )

Я смог скопировать php.ini.default в php.ini , добавить date.timezone = "US/Central" вверху (справа внизу [php] ), и проблема решена.

(По крайней мере, сообщение об ошибке исчезло.)

Из того, что я помню, когда я использовал EasyPHP, файл php.ini находится либо в C:\Windows\ или C:\Windows\System32

В файле php.ini укажите свой каталог расширений, например:

 extension_dir = "C:/php/ext/" 

Вы увидите, что в папке PHP есть папка ext со всеми DLL и расширениями.

В командной строке нет php.ini. Вам нужно скопировать файл из ...EasyPHP-<<version>>\apache\php.ini в ...EasyPHP-<<version>>\php\php.ini чем изменить его в директории php

Справка: