Итак, я настроил 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);
Это вывод, который я получаю при попытке запустить задание cron:
www-data
PHP Warning: fopen(TEST_4e15266d09fa2.tst): failed to open stream: Permission denied
Тем не менее, когда вы делаете это из оболочки с помощью su www-data
, сценарий выполняется просто отлично и создает тестовый файл без сбоев.
Любая идея, почему это может быть?
РЕДАКТИРОВАТЬ: я думаю, что su www-data
, вероятно, не нужен, потому что php будет работать, как бы он ни работал, но я попробовал это на всякий случай. Однако cron и скрипт выполняются как www-data
, как видно из вывода.
getcwd
сообщил/usr/share/webmin/cron
. 07.07.2011