Linux指定用户执行PHP的脚本

1. 为啥需要指定用户呢

因为想用PHP代码控制脚本的‘开始’和‘重启’,如果不指定,默认是用当前用户运行的,比如在终端直接输入php ./websockt.php,当前登录的是root用户的话,默认就是以root在执行。
当我们想用PHP代码结束这个进程的时候,由于web服务器的用户多半不会是root,一般是www之类的,那PHP代码就没有权限kill掉这个进程,则无法实现用代码重启的功能!

2. 如何指定

用sudo命令,所以这需要超级权限,比如root用户才能用。
sudo -u www php ./websocket.php,这样子就是用www运行的这个程序,在PHP中就可以用exec('kill -9 123456')去杀死这个进程了!

3. 贴个完整的实例

#! /bin/bash
PIDS=`ps -ef | grep "pige.site/public/index.php api/index/task" | grep -v grep | awk '{print $2}'`
USER=`whoami | awk '{print $1}'`

if [ "$PIDS" != "" ]
then
kill -9 $PIDS
echo 'restart'
else
echo 'start'
fi

if [ "$USER" == "root" ]
then
sudo -u www php /www/wwwroot/pige.site/public/index.php api/index/task &
else
#‘2>/dev/null >/dev/null &’是为了让PHP的exec()在后台执行
php /www/wwwroot/pige.site/public/index.php api/index/task 2>/dev/null >/dev/null &
fi

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容