Чувак, где мой php.ini?
Несколько лет назад я установил Apache 2.2x и PHP 5.3.1 на сервер Linux, который я поддерживаю. Я использовал.tar.gz и построил их в соответствии с инструкциями (вместо rpms и what-have-you). И все было хорошо.
Сегодня мне нужно установить это, которое похоже на библиотеку PHP. Я прошел все шаги, чтобы сделать установку, и я нахожу ibm_db2.so в $PHP_HOME/lib/extensions/somecomplicatedname/ibm_db2.so
Отличный улов - последний шаг - настроить php.ini, но в моей системе НЕТ php.ini. Ужас ужасов. PHP работает отлично, за исключением, конечно, для этой новомодной вещицы ibm_db2, которую я хочу использовать, чтобы кто-то мог использовать графический интерфейс для работы с DB2
, (Я попробовал небольшой скрипт php, который не работает и указывает, что функции ibm_db2 недоступны).
Мне приходится иметь дело с PHP раз в несколько лет, поэтому, пожалуйста, расскажите мне на самом базовом уровне о том, что я мог бы сделать, чтобы обеспечить доступ через GUI через веб-интерфейс. DB2
,
15 ответов
Лучший способ найти это: создать файл php и добавить следующий код:
<?php phpinfo(); ?>
и откройте его в браузере, он покажет файл, который на самом деле читается!
Обновления от OP:
- Ранее принятый ответ, вероятно, будет быстрее и удобнее для вас, но он не всегда корректен. Смотрите комментарии к этому ответу.
- Обратите также внимание на более удобную альтернативу
<?php echo php_ini_loaded_file(); ?>
упоминается в этом ответе.
В командной строке выполните:
php --ini
Вы получите что-то вроде:
Configuration File (php.ini) Path: /etc/php5/cli
Loaded Configuration File: /etc/php5/cli/php.ini
Scan for additional .ini files in: /etc/php5/cli/conf.d
Additional .ini files parsed: /etc/php5/cli/conf.d/curl.ini,
/etc/php5/cli/conf.d/pdo.ini,
/etc/php5/cli/conf.d/pdo_sqlite.ini,
/etc/php5/cli/conf.d/sqlite.ini,
/etc/php5/cli/conf.d/sqlite3.ini,
/etc/php5/cli/conf.d/xdebug.ini,
/etc/php5/cli/conf.d/xsl.ini
Это с моей локальной машины. Однако вторая строка интересная. Если ничего не сказано, взгляните на первый. Это путь, по которому PHP ищет php.ini
,
Вы можете получить ту же информацию, используя phpinfo()
в сценарии и вызвать его с помощью браузера. Это упоминается в первом блоке вывода. php -i
делает то же самое для командной строки, но это довольно неудобно.
Это работает для меня:
php -i | grep 'php.ini'
Вы должны увидеть что-то вроде:
Loaded Configuration File => /usr/local/lib/php.ini
ps чтобы получить только путь php.inin
php -i | grep /.+/php.ini -oE
В командной строке введите
php --ini
Это покажет вам путь что-то вроде
Configuration File (php.ini) Path: /usr/local/lib
Loaded Configuration File: /usr/local/lib/php.ini
Если приведенная выше команда не работает, используйте эту
echo phpinfo();
Используйте следующие команды, чтобы найти php.ini
Путь к файлу в Linux.
[root@AnyDirectory ~]# locate php.ini
/etc/php.ini
/etc/php.ini.rpmnew
/usr/share/doc/php-common-5.4.45/php.ini-development
/usr/share/doc/php-common-5.4.45/php.ini-production
или попробуйте это по-другому
[root@AnyDirectory ~]# php --ini
это показывает результат пути
Эта команда должна помочь вам найти ее
php -r "phpinfo();" | grep php.ini
PHP поставляется с двумя встроенными функциями, чтобы показать, какой файл конфигурации загружен:
- php_ini_loaded_file возвращает загруженный INI-файл
- php_ini_scanned_files возвращает список файлов.ini, проанализированных из дополнительного ini dir
В зависимости от настроек Apache и CLI могут использовать разные ini-файлы. Вот два решения:
Apache:
Просто добавьте следующее в файл php и откройте его в браузере.
print php_ini_loaded_file();
print_r(php_ini_scanned_files());
CLI:
Скопируйте и вставьте в свой терминал:
php -r 'print php_ini_loaded_file(); print_r(php_ini_scanned_files());'
phpinfo();
скажет вам его местонахождение или из командной строки
php -i
Попробуйте одно из этого решения
В вашем терминале типа
find / -name "php.ini"
В вашем терминале типа
php -i | grep php.ini
, Должен показать путь к файлу какConfiguration File (php.ini) Path => /etc
- Если вы можете получить доступ к одному из ваших файлов php, откройте его в редакторе (блокнот) и вставьте ниже код после
<?php
в новой строкеphpinfo();
Это скажет вам местоположение php.ini - Вы также можете поговорить с php в интерактивном режиме. Просто введите
php -a
в терминале введите phpinfo(); после инициации php.
Запустите это в командной строке:
php -r "echo php_ini_loaded_file().PHP_EOL;"
Вы можете получить больше информации о ваших конфигурационных файлах, используя что-то вроде:
$ -> php -i | ack config # Use fgrep -i if you don't have ack
Configure Command => './configure' ...
Loaded Configuration File => /path/to/php.ini
Для SAPI: php-fpm
Нет необходимости создавать файл php.info (это не очень хорошая политика - оставлять его на прочтение всему миру). В командной строке:
php-fpm -i | more
Где-то в своем выводе он покажет эту строку:
Configuration File (php.ini) Path => /etc
Вот более полное объяснение: https://www.cloudinsidr.com/content/how-to-figure-out-your-php-configuration-parameters-without-info-php/
согласно этому ответу , начиная с PHP 7 , обычный файл php.ini был удален и добавлен с помощью и
php.ini-devlopment
.
поэтому вместо php.ini, которого в моем случае не существует (я установил php 8.1), используйте и он находится в папке установки php (что-то вроде:
C:\PHP-8.1.5
) и создайте файл и назовите его, а затем скопируйте содержимое
php.ini-production
в этом новом
php.ini
.
Уже упоминалось несколько допустимых способов поиска файла php.ini, но если вы наткнулись на эту страницу, потому что хотите что-то с ней сделать в скрипте bash:
path_php_ini="$(php -i | grep 'Configuration File (php.ini) Path' | grep -oP '(?<=\=\>\s).*')"
echo ${path_php_ini}