1

追加の php.ini ファイルが読み込まれることに問題があります。使用する構成ディレクトリを指定しますが、PHP が他の場所を調べたり、他の php.ini またはモジュールをロードしたりしたくありません。結局のところ、/etc/php.d には存在しないモジュールが指定されているため、関数を呼び出すと常にエラーが発生します。

httpd.conf でシェルの PHPRC または PHPINIDIR を設定して指定した場所のみを参照するように PHP に指示するにはどうすればよいですか?

Configuration File (php.ini) Path: /etc
Loaded Configuration File:         /home/me/php/etc/php.ini
Scan for additional .ini files in: /etc/php.d
Additional .ini files parsed:      /etc/php.d/dbase.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

常に発生するエラーは、関数の呼び出しに返す JSON 文字列に干渉しています。エラーは次のとおりです。

PHP Warning:  PHP Startup: Unable to load dynamic library     
'/home/me/usr/lib64/php/modules/dbase.so' - /home/me/usr/lib64/php/modules/dbase.so: 
cannot open shared object file: No such file or directory in Unknown on line 0

dbase.so は /etc/php.d で宣言されていますが、システム レベルの設定にアクセスできないため削除できません。さらに、他のユーザーがデフォルト設定に依存している可能性があります (それらは壊れています)。

ありがとう。

4

2 に答える 2

2
poncha@localhost:~$ php -c . -r 'var_dump(function_exists("mysql_connect"));'
bool(true)

poncha@localhost:~$ export PHP_INI_SCAN_DIR=""
poncha@localhost:~$ php -c . -r 'var_dump(function_exists("mysql_connect"));'
bool(false)

-c実際にはApache構成と一致しますPHPIniDir。環境変数については、Apache インスタンス (たとえば apache init スクリプト) に設定できますが、それでも OS レベルの制御が必要であることを意味します。

于 2012-07-16T06:46:33.993 に答える
1

MikeC、これはウェブホスティング共有インストールの一般的な問題です。PHP検索リストは仕様によるものであり、ISPがiniインクルードを適用できるようにするのに役立ちます。システム構成にアクセスできない場合、それを修正することはできません。これは、ホスティングプロバイダーのサービス/サポートデスクに記録するものです。エラーを指摘し、conf.dディレクトリからiniファイルを削除するように依頼します。

私は過去に同様の問題を抱えていました。

「私が常に受けるエラーは、関数の呼び出しに返すJSON文字列に干渉している」ということに関して、なぜとにかくユーザーまたはAJAXルーチンにエラーを返すのですか?ベストプラクティスは、エラーをファイルに記録することです。これにより、このコンテンツがJSONリターンに表示されないようにする必要があります。

于 2012-07-16T07:49:20.293 に答える