2

コードベース外のパスから ini ファイルをロードするには、apache を使用してパスを定義し、php では apache_getenv / getenv を使用します

phpunit は apache_getenv コマンドを理解していないようです。これは既知の問題で、パスをハードコーディングする以外に解決策はありますか?

4

1 に答える 1

2

コマンドラインからphpを実行すると、Apache構成は使用されません。ただし、環境変数には引き続きアクセスできます。したがって、最初にgetenv(の代わりにapache_getenv)どこでも使用するように変更します。次に、bashからphpを開始する場合は、次のように実行します。

 export MY_CONFIG = "/path/to/my.ini"
 phpunit

エクスポートは、bashセッションごとに1回だけ実行する必要があります。これを2行のbashスクリプトでまとめることができます。

このアプローチには1つの問題があります。それは、現在2か所に構成があることです。マーフィーの法則によると、これら2つのファイルは同期を外すのに非常に苦労します。したがって、別のアプローチは、php.ini(*)のカスタムエントリを使用することです。次に、コードでget_cfg_varを使用してこれらの値をフェッチします。このアプローチが気に入らない人もいることに注意してください。たとえば、php.iniで任意の値を作成し ます。賢明に使用してください。マシンがこの設定を必要とするアプリケーション専用である場合は、適切な選択です。それが多くのスクリプトの1つにすぎず、マルチユーザーマシン上にある場合、それは疑わしいものです。

3番目のアプローチは、スクリプトとともに保持される実際のiniファイルへのシンボリックリンクです。そうすれば、スクリプトは常にそれを見つけますが、それは開始されます。私はこのアプローチが一番好きですが、それほど動的ではありません。環境変数を使用する意味は、仮想ホストごとに異なる値を使用するためか、そのようなものであると推測しています。

*:apacheとcliに共通のphp.iniファイルを使用していることを確認してください。一部のセットアップには、apache専用およびcli専用の構成ファイルもあります。Ubuntuマシンでは、/ etc / php5 / conf.dの下にmyconfig.iniというファイルを作成します。これは、保守が簡単で、そのディレクトリがapacheとcliの両方で使用されるためです。

于 2012-10-15T23:32:35.517 に答える