web-dev-qa-db-ja.com

Webサーバーユーザーの$ PATHの設定

_$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の開始点だと思いますが、効果はありません。

6
Googlebot

どのディストリビューションかはわかりませんが、私の推測では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_開始スクリプトで指摘しているように。

7
user9517