Я использую Ubuntu 16.04. Я пытаюсь запустить скрипт PHP, расположенный в /var/www/html/CronScripts/
, как cronjob. Все, что делает этот скрипт, это создает файл .txt
или .out
в том же каталоге. Вот сценарий:
<?php
$handle = fopen("theFileHandle.out", "a");
fwrite($handle, "The quick brown fox jumps over a lazy dog.\n");
fclose($handle);
?>
Теперь проблема в том, что когда я выполняю этот скрипт, открывая его в браузере, я получаю следующие ошибки:
Warning: fopen(theFileHandle.out): failed to open stream: Permission denied in /var/www/html/CronScripts/index.php on line 3
Warning: fwrite() expects parameter 1 to be resource, boolean given in /var/www/html/CronScripts/index.php on line 4
Warning: fclose() expects parameter 1 to be resource, boolean given in /var/www/html/CronScripts/index.php on line 5
ТАК мой вывод было то, что если этот скрипт запускается как sudo
, не будет проблем с разрешением; и поскольку я в конечном итоге собираюсь запустить скрипт в cronjob, я выполнил следующую команду в терминале
sudo crontab -e
, чтобы добавить следующий cronjob в файл crontab пользователя sudo
.
* * * * * php /var/www/html/CronScripts/index.php > /var/www/html/CronScripts/output.out
После этого был создан файл с именем output.out
, НО ЭТО БЫЛО ПУСТОЙ.
Затем из моего веб-поиска я пришел к выводу, что я добавляю cronjob в crontab пользователя sudo, но apache2 / php запускается пользователем www-data
, так что, вероятно, это проблема. Поэтому я переключил пользователя на www-data
, выполнив su -s /bin/bash www-data
, а затем в его crontab я добавил * * * * * php /var/www/html/CronScripts/index.php > /var/www/html/CronScripts/out.out
НО выходной файл журнала out.out
никогда не создается.
Итак, мой вопрос: почему я сталкиваюсь с этой проблемой и как мне ее решить?