PHP Cronjob-权限被拒绝?

Gre*_*reg 2 php cron crontab

因此,我设置了一个cronjob来运行以下命令:

php /var/www/path/to/cron/do-stuff.php

路径正确。该目录归拥有www-data

该脚本执行以下操作:

chdir( getcwd() );
echo shell_exec('whoami');

$handle = fopen(uniqid('TEST_') . '.tst');
fwrite($handle, 'foo');
fclose($handle);
Run Code Online (Sandbox Code Playgroud)

这是我尝试运行cron作业时得到的输出:

www-data
PHP Warning:  fopen(TEST_4e15266d09fa2.tst): failed to open stream: Permission denied
Run Code Online (Sandbox Code Playgroud)

但是,当使用shell进行此操作时su www-data,脚本会执行得很好,并且不会打without地生成测试文件。

知道为什么会这样吗?

编辑:我猜su www-data可能是不必要的,因为php可以运行,但是它可以运行,但是我尝试过以防万一。www-data从输出中可以看到,cron和脚本的执行就像是执行一样。

fan*_*ite 5

您是否尝试将完整路径而不只是文件名放在fopen函数中?