美文网首页
Linux指定用户执行PHP的脚本

Linux指定用户执行PHP的脚本

作者: 简书是什么书 | 来源:发表于2023-09-07 15:55 被阅读0次

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

相关文章

网友评论

      本文标题:Linux指定用户执行PHP的脚本

      本文链接:https://www.haomeiwen.com/subject/drfrvdtx.html