Debian 9与crontab权限有关的问题

Debian 9与crontab权限有关的问题,cron,debian-stretch,Cron,Debian Stretch,我在VPS上安装了Debian 9。我在服务器上安装了LAMP。我以root用户身份登录,创建了一个新站点“/var/www/example.com”,我看到权限是“root:root”。该网页将显示在浏览器中 我创建了一个cron.php文件,将当前时间写入该文件。在crontab中,我有/usr/bin/php/var/www/example.com/cron.php。如果我通过终端运行这个命令,一切都正常。但是,Crontab返回错误,因为它没有写入权限。但是,Crontab作为root运

我在VPS上安装了Debian 9。我在服务器上安装了LAMP。我以root用户身份登录,创建了一个新站点“/var/www/example.com”,我看到权限是“root:root”。该网页将显示在浏览器中

我创建了一个cron.php文件,将当前时间写入该文件。在crontab中,我有/usr/bin/php/var/www/example.com/cron.php。如果我通过终端运行这个命令,一切都正常。但是,Crontab返回错误,因为它没有写入权限。但是,Crontab作为root运行。该目录有777个权限

我试图将/var/www设置为www-data:www-data,对于crontab(crontab-uwww-data-e)也是如此。结果是相同的,cron运行但不写入文件

编辑:
我发现如果脚本包含:file_put_contents('output.txt','xxx');cron创建的文件位于根目录中。如果我设置了完整路径,一切都正常:文件内容('/var/www/exmaple.com/output.txt',xxx');有没有办法修改此行为?

您可以创建如下示例脚本:

#!/bin/bash
source ~/.bashrc #or use .bash_profile
/usr/bin/php /var/www/example.com/cron.php >>/path/to/output
并将其添加为
cron
记录:

0 * * * * /path/to/script/sh

以哪个用户的身份运行cron作业?默认情况下,以root用户的身份运行。不幸的是,此操作不起作用。CRON[9064]:(root)CMD(/var/www/example.com/console.sh),console.sh具有权限:-rwxr-xr-x 1 root 138 Feb 27 20:44 console.sh。如果我从终端运行,它会写入文件,否则不会。我发现如果脚本包含:file_put_contents('output.txt',xxx');cron创建的文件位于根目录中。如果我设置了完整路径,一切都正常:文件内容('/var/www/exmaple.com/output.txt',xxx');是否有任何方法可以修改此行为?您可以以不同的用户身份运行脚本,其主页是/var/www/exmaple.com。但是为什么不在这个调用中添加完整路径呢?