0

いくつかの仮想ホストを持つ開発サーバーがあります。それぞれが次のコマンドを実行できる必要があります: propel-gen ./ creole そのスクリプトは、データベースをリバース エンジニアリングする php を実行します... しかし、それが実行する php はそうするために含める必要があります。

php.ini には include_path が設定されていません。これは、すべての仮想ホストに対してグローバルであるためです。vhost ごとに include_path を一意にする必要があります。

コマンドラインでこれを機能させるにはどうすればよいですか? (注: コマンドラインは Apache を経由しないため、htaccess は機能しません)。

この問題を回避する別の方法はありますか? おそらく、インクルード パスを設定するためにコマンドライン パラメータを渡しますか? おそらく.bashrcに何かを設定していますか?:(

PS - スクリプトは、ハードコーディングされたインクルード パスを持つ私の Mac で正常に動作します。

4

1 に答える 1

1

コマンド ラインから PHP を実行する場合、-dスイッチを使用して構成オプションを定義できます。php.ini

CLI で PHP を実行するときにできることの詳細については、コマンド ラインからの PHP の使用を参照してください。

あなたの場合、これを実行しているとします。これは現在の のみを表示しますinclude_path:

$ php -r 'var_dump(get_include_path());'

デフォルトの出力は次のようになります(私のマシンでは、ところで):

string(20) ".:/usr/local/lib/php"

今、このよう-dにオーバーライドするために使用します:include_path

$ php -dinclude_path='.:/usr/local/lib/php:/var/my/directory/lib' -r 'var_dump(get_include_path());'

あなたが得ている:

string(42) ".:/usr/local/lib/php:/var/my/directory/lib"


認めますが、これはかなり退屈で、タイプするのに時間が-dblahblahかかります。

したがって、次のようにエイリアスを定義できます。

$ alias myphp='php -dinclude_path=".:/usr/local/lib/php:/var/my/directory/lib"'

そして今、myphp代わりにコマンドを使用している場合は、もうphp指定する必要はありinclude_pathません:

$ myphp -r 'var_dump(get_include_path());'
string(42) ".:/usr/local/lib/php:/var/my/directory/lib"

これはシェルセッション間で持続しません...したがって、aliasコマンドを の最後に置くことができる~/.bashrcので、ログインするたびに実行されます:-)

于 2009-07-29T11:17:34.007 に答える