Я скомпилировал PHP 5.3, и, похоже, все работает правильно, за исключением запуска PHP из командной строки.
Когда я бегу:
# php --ini
он производит такой вывод:
Configuration File (php.ini) Path: /etc/php5/apache2
Loaded Configuration File: /etc/php5/apache2/php.ini
Scan for additional .ini files in: (none)
Additional .ini files parsed: (none)
Когда я создаю страницу и выводю phpinfo (); Я получаю такой вывод:
Configuration File (php.ini) Path: /etc/php5/apache2
Loaded Configuration File: /etc/php5/apache2/php.ini
Scan for additional .ini files in: /etc/php5/apache2/conf.d
Additional .ini files parsed: /etc/php5/apache2/conf.d/curl.ini, /etc/php5/apache2/conf.d/gd.ini, /etc/php5/apache2/conf.d/imagick.ini, /etc/php5/apache2/conf.d/memcache.ini, /etc/php5/apache2/conf.d/mhash.ini, /etc/php5/apache2/conf.d/ming.ini, /etc/php5/apache2/conf.d/mysql.ini, /etc/php5/apache2/conf.d/mysqli.ini, /etc/php5/apache2/conf.d/pdo.ini, /etc/php5/apache2/conf.d/pdo_mysql.ini, /etc/php5/apache2/conf.d/pdo_sqlite.ini, /etc/php5/apache2/conf.d/pspell.ini, /etc/php5/apache2/conf.d/recode.ini, /etc/php5/apache2/conf.d/snmp.ini, /etc/php5/apache2/conf.d/sqlite.ini, /etc/php5/apache2/conf.d/tidy.ini, /etc/php5/apache2/conf.d/xmlrpc.ini, /etc/php5/apache2/conf.d/xsl.ini
Я не могу понять, почему дополнительные файлы .ini загружаются, когда php выполняется через apache, а не при использовании CLI. У кого-нибудь есть идеи?
Вот урезанная конфигурация, которую я использовал для компиляции PHP:
'./configure' \
'--prefix=/usr' \
'--with-config-file-path=/etc/php5/apache2' \
'--with-config-file-scan-dir=/etc/php5/apache2/conf.d'
Мне нужно, чтобы драйвер PDO mysql был загружен для чего-то, что я запускаю в командной строке, и я предполагаю, что это корень проблемы.
Любые предложения будут приняты.
Я не знаю, почему config-file-scan-dir не используется при запуске php в cli (вы уверены, что загружаемый вами двоичный файл является хорошим? Я имею в виду тот, который вы перестраиваете).
Но вы можете использовать php -c /etc/php5/apache2/conf.d или установить PHP_INI_SCAN_DIR на /etc/php5/apache2/conf.d в качестве временного решения.
У меня такая же проблема. Просто проверьте владельца и права доступа для каждого файла в /etc/php5/conf.d/. Он должен принадлежать пользователю root и быть доступным для чтения другим пользователям.
Проблема заключалась не в том, что php в итоге не включал дополнительные файлы .ini.
Я перекомпилировал php и заметил, что команда make install не завершилась. Произошла ошибка:
apxs:Error: Activation failed for custom /etc/apache2/httpd.conf file..
apxs:Error: At least one `LoadModule' directive already has to exist..
Поскольку Apache поставляется с apache2.conf, который включает директивы модуля и httpd.conf, httpd.conf фактически пуст.
Просто добавив:
# Dummy LoadModule directive to aid module installations
# LoadModule dummy_module /usr/lib/apache2/modules/mod_dummy.so
to httpd.conf позволяет apxs работать без ошибок, и полная установка php завершается успешно.
Затем драйверы PDO были доступны как через интерфейс командной строки, так и через Apache.
Так как радиус предположил, по сути, я не использовал хороший двоичный файл. Спасибо за вашу помощь.