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

329

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

extension=php_pdo_mysql.dll

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

  • 0
    Также см. Stackoverflow.com/q/8684609/632951
  • 0
    @sjas Это не неправильно, это правильно и даст вам знать путь к загруженному php.ini в cli.
Теги:
easyphp

14 ответов

843
Лучший ответ

Просто запустите php --ini и найдите в выходных данных Loaded Configuration File найти Loaded Configuration File php.ini используемый вашим CLI.

  • 3
    @Mchl Я бы тебя голосовал, но думаю, тебе следовало написать ответ с grep в строке.
  • 6
    @BradFJacobs зачем использовать grep, когда он теперь кроссплатформенный?
Показать ещё 11 комментариев
330

Вы можете получить полный 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"
  • 0
    Я сделал это, но странно то, что он указывает мне путь C: \ WINDOWS. И я не нашел его там?
  • 0
    Название файла по-прежнему: php.ini, верно? Или что-то начиная с php хотя бы?
Показать ещё 11 комментариев
32
php --ini

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

14

Вы можете использовать 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
13

Запустите 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. Он отобразит все возможные варианты.

7

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

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
6

В 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]), и проблема решена.

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

6

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

Я использую очень мощную и полезную программу из командной строки 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
  • 1
    php -i дал мне неправильные результаты, но этот совершенно нормально. Спасибо!
4

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

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

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

3

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

  • 2
    Правильно, это говорит мне C: \ WINDOWS. Но я не нашел это там серьезно!
1

Делать

find / -type f -name "php.ini" 

Это выведет все файлы с именем php.ini.

Узнайте, какой из них вы используете, обычно apache2/php.ini

  • 0
    Это не работает, если нет файла php.ini (некоторые Docker-контейнеры). Поэтому принятый ответ лучше подходит.
1

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

extension_dir = "C:/php/ext/"

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

0

Просто запустите команду

php -i | grep 'php.ini'
-4

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

Ссылка:

Ещё вопросы

Сообщество Overcoder
Наверх
Меню