Estou executando o Ubuntu 16.04. Eu estou tentando executar um script PHP localizado em /var/www/html/CronScripts/
como um cronjob. Tudo o que esse script faz é criar um arquivo .txt
ou .out
no mesmo diretório. Aqui está o script:
<?php
$handle = fopen("theFileHandle.out", "a");
fwrite($handle, "The quick brown fox jumps over a lazy dog.\n");
fclose($handle);
?>
Agora, o problema é que, quando executo esse script abrindo-o no navegador, obtenho os seguintes erros:
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
ASSIM, minha inferência é que, se esse script for executado como sudo
, não haverá PROBLEMAS DE PERMISSÃO; e como vou finalmente executar o script em um cronjob, executei o seguinte comando no terminal
sudo crontab -e
para adicionar o cronjob seguinte ao arquivo crontab do usuário sudo
.
* * * * * php /var/www/html/CronScripts/index.php > /var/www/html/CronScripts/output.out
Depois disso, um arquivo chamado output.out
WAS foi criado, MAS ESTAVA EMPTY.
ENTÃO, da minha pesquisa na Web, concluí que estava adicionando o cronjob ao crontab do usuário sudo, mas o apache2 / php é executado pelo usuário www-data
, então esse é provavelmente o problema. Então, mudei o usuário para www-data
executando su -s /bin/bash www-data
e, em seguida, para seu crontab, adicionei * * * * * php /var/www/html/CronScripts/index.php > /var/www/html/CronScripts/out.out
, mas o arquivo de log de saída out.out
nunca foi criado.
Então, minha pergunta é por que estou enfrentando esse problema e como resolvo isso?