2010-11-26 2 views
5

Ich habe diese script.php-Datei, die ich als Cron-Job auf meinem Linux/Apache-Server ausführen möchte.Führen Sie eine script.php auf Cron-Job auf Linux/Apache-Server aber öffentlichen Zugriff auf die PHP-Datei

Allerdings möchte ich nicht öffentlich auf www.mycompanyname.com/script.php zugreifen und das Skript gleichzeitig ausführen.

Wie können wir das verhindern? Wie können wir das Skript nur auf den Zugriff des Servers beschränken? Verwendet es chmod oder etwas in der .htaccess-Datei, etwas auf der ganzen Linie?

Irgendwelche Ratschläge?

Antwort

2

Sie haben wahrscheinlich so etwas wie ein public_html Verzeichnis, in dem Sie alle PHPs haben. Legen Sie es einfach außerhalb dieses Verzeichnisses ab.

+0

ohh, klingt logisch i nie gedacht .. ich vergaß vermutlich die public_html ist der Stamm, der dem Hostnamen anstelle der externen Verzeichnisse zugeordnet ist. Da meine script.php Apache benötigt, um zu laufen, ich denke, ein Verzeichnis außerhalb der public_html ist noch lauffähig? – flyclassic

+0

Sicher! Sie brauchen nur die Erlaubnis für Ihren Benutzer im Verzeichnis (ich nehme an, das Cron läuft als Ihr Benutzer) – cambraca

7

Sie können dies tun, als die erste Zeile von PHP in script.php ...

if (PHP_SAPI !== 'cli') { 
    exit; 
} 

Wenn jemand schlägt das Skript über HTTP, wird die PHP_SAPI seine cgi glaube ich, und nicht cli, das Skript zu verursachen sofort verlassen.

Natürlich hängt dies davon ab, dass Ihr Cron aufruft.

Sie auch ... schicken könnte

header('HTTP/1.0 404 Not Found'); 

... oder natürlich, lassen Sie es außerhalb des Web-Root.

6

Wenn Sie das Skript außerhalb des Webroot-Ordners platzieren, ist es nicht über Ihren Webserver zugänglich. z.B. Ihre Webroot ist unter/var/www/public_html/ Sie setzen die script.php außerhalb des Ordners, zum Beispiel:/var/www/

Verwandte Themen