Wie kann ich CRON so einstellen, dass eine PHP-Datei außerhalb eines öffentlichen HTML-Ordners ausgeführt wird?

Wie kann ich CRON so einstellen, dass eine PHP-Datei außerhalb eines öffentlichen HTML-Ordners ausgeführt wird?

Ich habe beispielsweise eine PHP-Datei hier:

/data/web/process.php

Diese Datei ist nicht öffentlich verfügbar (in diesem Ordner läuft kein virtueller Host, aber Apache ist installiert). Ich muss diese Datei jeden Tag jede Minute ausführen.

Ich weiß, dass ich Crontab mit öffnen kann crontab -e, bin mir aber nicht sicher, was genau ich in die Datei schreiben soll, damit das, was ich tun muss, funktioniert.

Irgendwelche Hilfe, bitte?

Antwort1

Ausführen crontab -eund Zeile hinzufügen:

* * * * * /usr/bin/php -f /data/web/process.php 2>&1 >> /path/to/output/file.log

Bevor Sie das tun, stellen Sie sicher, dass es /usr/bin/php -f /data/web/process.phpdas gewünschte Ergebnis bringt. Beachten Sie auch, dass cron es als derselbe Benutzer ausführt, der es aufgerufen hat crontab -e. Wenn Sie es also als Benutzer rimmer ausführen, wird es als rimmer ausgeführt, wenn Sie es als Root ausführen, wird es als Root ausgeführt.

wenn Sie es als Apache-Benutzer ausführen möchten, tun Sie Folgendes:

sudo -u www-data crontab -e

vorausgesetzt, www-data ist Ihr Apache-Benutzer. Sie können auch eine Datei erstellen /etc/cron.d/my-php-job.

Stellen Sie sicher, dass keine Bösewichte die Datei /data/web/process.php bearbeiten können, und überprüfen Sie diese Datei sorgfältig. Ich würde diese Datei root-berechtigt machen und ihr die Berechtigung 644 erteilen. Machen Sie sie nicht Apache-Benutzer-eigen und beschreibbar.

Antwort2

Versuche Folgendes:

/path/to/php -f /data/web/process.php

verwandte Informationen