_$PATH
_、_/etc/profile
_の編集などのさまざまな方法で、Webサーバーユーザー(つまりwww-data)を含むすべてのユーザーに_/etc/environment
_を追加しようとしました。すべての場合、ターミナルで機能します、ただし、PHP内のシェルコマンドでは使用できません。
たとえば、ターミナルの_echo $PATH
_は、私が追加したものを含む利用可能なパスを示しています。しかし、PHP=のShell_exec('echo $PATH')
は、追加したパスを含まない元のパスを示しています:_/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
_
Webサーバーユーザーが使用できるように$ PATHをグローバルに設定するにはどうすればよいですか? Ubuntu/Debianでnginxを使用しています。
_/etc/init.d/nginx
_を編集しようとしました。これがnginxの開始点だと思いますが、効果はありません。
どのディストリビューションかはわかりませんが、私の推測ではUbuntuなどです。
_/etc/init.d/Apache2
_で定義されているデフォルトのPATHは_/usr/local/bin:/usr/bin:/bin
_です。
私のUbuntuシステムでは、ファイル_/etc/Apache2/envvars
_があります。このファイルでPATH
を定義でき、Apacheを再起動すると、使用されるパスになります。
_PATH=$PATH:/your/addtional/path
_
Nginxの場合、必要なパスを_fastcgi_param
_として渡すことができます
_location ~ \.php$ {
include /etc/nginx/fastcgi.conf;
fastcgi_pass unix:/tmp/php.socket;
fastcgi_param PATH /usr/local/bin:/usr/bin:/bin:/your/path;
}
_
必要なPATH全体を指定する必要があります
さらに更新。
私はphpをfcgiとして設定しています(チャットの議論で@MichaelHamptonに感謝します)。system(...);
が参照するパスは、php initスクリプト(私の場合は/ etc/init)に設定されているパスであることがわかりました.d/php-fcgi)。
そして、多くのことを調べた後、私は this を見つけました
_env[PATH]=/your/custom/path
_
_php5-fpm.conf
_で、または@ALiが_php5-fpm
_開始スクリプトで指摘しているように。