web-dev-qa-db-ja.com

php cli追加の.iniファイルが読み込まれていない

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 

PhpがApacheを介して実行され、CLIを使用していないときに、追加の.iniファイルがロードされる理由がわかりません。誰かアイデアはありますか?

PHPをコンパイルするために使用した構成を以下に示します。

'./configure' \
'--prefix=/usr' \
'--with-config-file-path=/etc/php5/Apache2' \
'--with-config-file-scan-dir=/etc/php5/Apache2/conf.d'

コマンドラインで実行しているものに対してPDOmysqlドライバーをロードする必要があり、これが問題の原因であると推測しています。

どんな提案でも親切に受け取られます。

4
Steve Todd

問題は、phpに追加の.iniファイルが最後に含まれていなかったことではありませんでした。

Phpを再コンパイルしたところ、「makeinstall」コマンドが完了しなかったことがわかりました。生成されたエラーは次のとおりです。

apxs:Error: Activation failed for custom /etc/Apache2/httpd.conf file..
apxs:Error: At least one `LoadModule' directive already has to exist..

Apacheにはモジュールディレクティブとhttpd.confを含むApache2.confが同梱されているため、実際にはhttpd.confは空です。

単に追加する:

# Dummy LoadModule directive to aid module installations
# LoadModule dummy_module /usr/lib/Apache2/modules/mod_dummy.so

httpd.confを使用すると、apxをエラーなしで実行でき、phpの完全なインストールが正常に完了します。

PDOドライバーは、CLIとApacheを介して利用できるようになりました。

radius が示唆しているように、本質的に、私は良いバイナリを使用していませんでした。ご協力いただきありがとうございます。

1
Steve Todd

Phpをcliで実行するときにconfig-file-scan-dirが使用されない理由がわかりません(ロードするバイナリが適切なものであると確信していますか?つまり、再構築するバイナリを意味します)。
しかし、回避策としてphp -c /etc/php5/Apache2/conf.dを使用するか、PHP_INI_SCAN_DIRを/etc/php5/Apache2/conf.dに設定できます。

2
radius

私も同じ問題を抱えていました。 /etc/php5/conf.d/内のすべてのファイルの所有者と権限を確認するだけです。 rootが所有し、他のユーザーが読み取り可能である必要があります。

1
user63285