Я пытался добавить $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
запустить скрипт.