我正在尝试使用 crontab 在每晚的特定时间运行一个 php 文件,但是由于目录权限,php 需要作为 www-data 运行。要将其作为 www-data
运行,我正在使用 root
crontab 并更改其中的用户,如下所示:
* 20 * * * sudo -u www-data/usr/bin/env TERM=xterm/path/to/dailyProc.sh
dailyProc如下
today=`date +"%d%m%y"`
year=`date +"%y"`
dm=`date +"%m%d"`
`tar -zxf /path/to/input/$today.tgz -C /path/to/output`
echo "starting data proc"
`/usr/bin/php5 -f /path/to/dataproc.php date=$dm year=$year`
echo "data proc done"
dailyProc.sh 中的所有其他命令都有效,但 php 不运行。 php 使用输出缓冲区并将其写入文件,从命令行调用它可以正常工作,但在通过 cron 调用时不起作用。
我也绝对可以使用 www-data
从命令行运行 dailyProc.sh
sudo -u www-data dailyProc.sh
一切都按预期进行。
有什么原因让我无法在 dailyProc.sh
中使用 crontab 运行这个 php 文件,而它的其他一切都正常?
最佳答案
Cron 也可以按用户运行。
crontab -u www-data -e
关于php - 使用 crontab 从 bash 脚本将 php 文件作为 www-data 执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30438262/