Ubuntu系统service配置php-fpm以root用户运行,执行exec
php-fpm以root启动
1、修改配置文件php-fpm.conf的启动用户为root,默认是www-data
vi /etc/php/7.4/fpm/pool.d/www.conf
user = root
group = root
2、启动PHP
启动的时候发现报错,启动不了,默认不允许root用户启动的,此时我们可以看一下-help
php -help
这里有个选项,-R,表示允许通过root启动
启动后验证下
/usr/sbin/php7.4-fpm -R
此时发现php-fpm的运行用户已经是root用户了
但是此时发现我们使用service启动PHP时无法使用此方式启动
3、service配置root用户启动php
查看系统service启动php-fpm的文件路径
我使用的系统启动文件路径是:/etc/init.d/php7.4-fpm
可根据自己服务器查找
编辑此文件
#!/bin/bash
PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="PHP 7.4 FastCGI Process Manager"
NAME=php-fpm7.4
CONFFILE=/etc/php/7.4/fpm/php-fpm.conf
DAEMON=/usr/sbin/$NAME
DAEMON_ARGS="--daemonize --fpm-config $CONFFILE"
CONF_PIDFILE=$(sed -n 's/^pid[ =]*//p' $CONFFILE)
PIDFILE=${CONF_PIDFILE:-/run/php/php7.4-fpm.pid}
TIMEOUT=30
SCRIPTNAME=/etc/init.d/$NAME
[ -d "/run/php/" ] || mkdir -p /run/php/
function start()
{
if [ -f ${PIDFILE} ]; then
echo "${NAME} already running..."
else
echo ${NAME} start
start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON
[ -f "/run/php/php-fpm.sock" ] || ln -s /run/php/php7.4-fpm.sock /run/php/php-fpm.sock
fi
}
function stop()
{
if [ ! -f ${PIDFILE} ]; then
echo "${NAME} found running..."
else
echo ${NAME} stop
start-stop-daemon --stop --quiet --retry=QUIT/$TIMEOUT/TERM/5/KILL/5 --pidfile $PIDFILE --name $NAME
[ -f "/run/php/php-fpm.sock" ] || rm -f /run/php/php-fpm.sock
fi
}
#使用root用户启动php-fpm
function retry()
{
if [ -f ${PIDFILE} ]; then
echo "${NAME} already running..."
else
echo ${NAME} start
$DAEMON -R
fi
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
retry)
stop
retry
;;
*)
echo "Please use $0 start/stop/restart/retry"
exit 1
esac
exit 0
修改文件后,运行
service php7.4-fpm retry
成功解决使用service 启动php为root用户