supervisord 配置文件
[program:satis]
command=/usr/local/webserver/php-7.1.15/bin/php artisan queue:work --sleep=3 --tries=2 --daemon
user=www
以 root 用戶啟動(dòng) supervisord
然后在 php 里面加
echo exec('whoami'); // output: www
會(huì)輸出 www, 但是加上
echo getenv('HOME'); // output: /root
卻是得到 /root. 如果以 www 用戶執(zhí)行
php -r 'echo getenv('HOME');'
卻是 /home/www.
想請(qǐng)教下是什么原因通過 supervisord 執(zhí)行 php 文件(root 用戶下啟動(dòng) supervisord, 配置用戶 www) 執(zhí)行 getenv('HOME') 會(huì)拿到 /root ?
1 回答

慕桂英3389331
TA貢獻(xiàn)2036條經(jīng)驗(yàn) 獲得超8個(gè)贊
我理解,配置用戶為www, 只是告知supervisor 在啟動(dòng)腳本的時(shí)候,以www
用戶來運(yùn)行,但是本身并沒有執(zhí)行類似su - www
這樣的操作. 所以,實(shí)際上系統(tǒng)的環(huán)境變量沒有切換過去, echo $HOME 的話,還是會(huì)輸出 /root
. 畢竟你是用 root 的環(huán)境下啟動(dòng)的服務(wù).
- 1 回答
- 0 關(guān)注
- 470 瀏覽
添加回答
舉報(bào)
0/150
提交
取消