Apaches VirtualHost Container 内で変数を設定する方法は次のとおりです
SetEnv MY_VAR "/opt/"
これで、PHP はこの変数に完全にアクセスできます。
echo $_SERVER['MY_VAR'];
/opt/
ただし、PHP コードからシェル スクリプトを呼び出すと、
passthru('/path/to/myscript');
MY_VAR
内は空です/path/to/myscript
。
ただし、このように呼び出しを変更すると、機能します。
passthru('export MY_VAR='. $_SERVER['MY_VAR'] .'; /path/to/myscript');
すべての環境変数をシェル スクリプトに渡すより良い方法はありますか? 複数渡す必要があるので。
system()、exec() 、バックティック、shell_exec()も試しました。それらはすべてpassthru()と同じ動作を示します。