Ich benutze Ubuntu 16.04. Ich versuche ein PHP-Skript unter var/www/html/CronScripts/
als Cronjob auszuführen. All dieses Skript erstellt eine .txt
oder .out
Datei im selben Verzeichnis. Hier ist das Skript:Berechtigung verweigert oder Etwas, wenn Sie versuchen, PHP-Skript als CRONJOB auszuführen, um eine TXT-Datei zu erstellen
<?php
$handle = fopen("theFileHandle.out", "a");
fwrite($handle, "The quick brown fox jumps over a lazy dog.\n");
fclose($handle);
?>
Nun das Problem ist, dass, wenn ich dieses Skript ausführen, indem sie im Browser zu öffnen, erhalte ich folgende Fehler:
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
so meine Schlussfolgerung ist, dass, wenn dies Skript wird ausgeführt als sudo
, es wird keine PERMISSION PROBLEME geben; und da ich schließlich werde das Skript in einem cronjob laufen, ich ausgeführt, um den folgenden Befehl im Terminal
sudo crontab -e
die follwoing cronjob sudo
Benutzer-crontab-Datei hinzuzufügen.
* * * * * php /var/www/html/CronScripts/index.php > /var/www/html/CronScripts/output.out
Danach wird eine Datei mit dem Namen output.out
geschaffen ** ABER es leer war.
dann aus meiner websearch schloss ich, dass ich cronjob sudo Benutzer crontab wurde hinzugefügt, aber apache2/php vom User www-data
laufen, so dass wahrscheinlich das Problem ist. Also wechselte ich den Benutzer zu www-data
durch Ausführen von su -s /bin/bash www-data
und dann zu seiner Crontab ich * * * * * php /var/www/html/CronScripts/index.php > /var/www/html/CronScripts/out.out
hinzugefügt, aber die Ausgabe-Protokolldatei out.out
wird nie erstellt.
Also meine Frage ist, warum bin ich mit diesem Problem konfrontiert und wie löse ich das?
im ersten Fall, wenn Sie Sudo ausführen ... gibt es Fehler in /var/log/apache2/error.log? Und was ist die Ausgabe dieser Befehlszeile: ls -la/var/www/html? – Nico