Несколько лет назад я установил Apache 2.2x и PHP 5.3.1 на Linux-сервер, который я обслуживаю. Я использовал .tar.gz и собрал их в соответствии с инструкциями (вместо rpms и т. п.). И все было в порядке. Сегодня мне нужно установить нечто, которое кажется библиотекой PHP. Я прошел все шаги до make install и нашел ibm_db2.so в:
$PHP_HOME/lib/extensions/somecomplicatedname/ibm_db2.so.
Загвоздка в том, что на последнем шаге нужно настроить файл php.ini, но в моей системе нет ни одного файла php.ini. PHP работает нормально, за исключением, конечно, этой новомодной штуки ibm_db2, которую я хочу использовать, чтобы кто-то мог применять GUI для работы с DB2 (я попробовал небольшой PHP-скрипт, который не работает и показывает, что функции ibm_db2 недоступны). Мне приходится иметь дело с PHP раз в несколько лет, поэтому, пожалуйста, просветите меня на самом базовом уровне о том, что я могу сделать, чтобы обеспечить доступ к DB2 через веб-интерфейс GUI.
Ответ 1
В командной строке выполните:
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
Это с моей локальной dev-машины. Однако вторая строка — самая интересная. Если там ничего не указано, посмотрите на первую. Это путь, по которому PHP ищет файл php.ini.
Вы можете найти ту же информацию с помощью phpinfo() в скрипте и вызвать его через браузер. Он упоминается в первом блоке вывода. php -i делает то же самое для командной строки, но это довольно неудобно.
Ответ 2
PHP поставляется с двумя встроенными функциями, показывающими, какой файл конфигурации загружен:
php_ini_loaded_file возвращает загруженный .ini файл;
php_ini_scanned_files возвращает список .ini файлов, разобранных из дополнительной директории ini.
В зависимости от вашей установки, Apache и CLI могут использовать разные .ini файлы. Вот два решения:
Apache:
Просто добавьте следующее в файл PHP (.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());'
Ответ 3Попробуйте одно из следующих решений:
В терминале введите find / -name "php.ini".
В терминале введите php -i | grep php.ini. Это должно показать путь к файлу как "Configuration File (php.ini) Path => /etc".
Если вы можете получить доступ к одному из ваших PHP файлов, откройте его в редакторе (Блокнот) и вставьте phpinfo(); после <?php на новой строке. Это сообщит вам расположение php.ini.
Вы также можете общаться с PHP в интерактивном режиме. Просто наберите php -a в терминале и введите phpinfo(); после запуска интерпретатора PHP.
Ответ 4
Для SAPI: php-fpm
Нет необходимости создавать файл php.info (в любом случае оставлять его на всеобщее обозрение — не самая лучшая идея). Выполните в командной строке:
php-fpm -i | more
Где-то в выходных данных будет показана эта строка:
Configuration File (php.ini) Path => /etc
Ответ 5
Уже упоминалось несколько действенных способов найти файл php.ini, но, если вы наткнулись на эту страницу, потому что хотите что-то сделать с ним в сценарии Bash:
path_php_ini="$(php -i | grep 'Configuration File (php.ini) Path' | grep -oP '(?<=\=\>\s).*')"
echo ${path_php_ini}
Ответ 6
Используйте следующую команду, чтобы найти путь к файлу php.ini в Linux:
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
Или попробуйте другой способ:
php --ini
Web