Назад | Перейти на главную страницу

Установка $ PATH для пользователя веб-сервера

Я пытался добавить $PATH для всех пользователей, включая пользователя веб-сервера (например, www-данные) с различными методами, такими как редактирование /etc/profile, /etc/environmentи т.д. Во всех случаях он работает в терминале, но не с командами оболочки внутри PHP.

Например echo $PATH в терминале показывает доступные пути, включая добавленные мной; но, shell_exec('echo $PATH') в PHP показывает исходные пути без добавленного мной пути: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

Как я могу установить глобальную переменную $ PATH для использования пользователем веб-сервера? Я использую nginx в Ubuntu / Debian.

Я пытался редактировать /etc/init.d/nginx, Я думаю, это отправная точка для nginx, но никакого эффекта.

Вы не говорите, какой дистрибутив, но я предполагаю, что это Ubuntu или аналогичный.

ПУТЬ по умолчанию, определенный в /etc/init.d/apache2 является /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;
}

Вам нужно указать весь ПУТЬ, который вы хотите


Дальнейшее обновление.

У меня php настроен как fcgi, поэтому (спасибо @MichaelHampton за обсуждение в чате), и я обнаружил, что путь, system(...); видит, это тот, который установлен в вашем сценарии инициализации php (в моем случае /etc/init.d/php-fcgi).


И после долгих поисков я обнаружил этот что приводит к решению

env[PATH]=/your/custom/path

в php5-fpm.conf или, как указывает @Ali в php5-fpm запустить скрипт.