宝塔面板的计划任务默认执行用户是root,如果任务里有打印日志的操作,则自动创建的log文件也是root用户权限,而php的运行用户是www,对root用户创建的日志文件默认没有写权限,进而导致程序报错。
此问题常见于 thinkphp、laravel等框架系统执行命令行脚本或队列脚本等。

解决方案,可以使用下面三种方法

1、以另一个用户身份运行命令

sudo -u www php /www/wwwroot/php_1.php

2、可以使用 su -c 和 -s 搭配操作,为计划任务指定执行用户,来解决此问题

su -c "{你要执行的命令}" -s /bin/sh 使用的用户
// 示例:
su -c "php think queue:listen --queue" -s /bin/sh www

3、如果有多条执行命令,可以用下面方法,方便书写及查看

su -s /bin/bash - www <<EOF
cd /www/wwwroot/www.phper163.com/
php think queue:listen --queue
EOF
所有评论
加载评论 ...
发表评论