Einführend:
Die Shell (welche denn?) kann man zwar für Skripte benutzen, diese kommt aber schnell an Grenzen, sie war nie als universelle Programmiersprache gedacht und wird wohl das Eine oder Andere nicht oder nicht effektiv können. Es gibt ja nicht grundlos so viele Programmiersprachen…
In php kein Akt, aber ich krieg nicht raus wie man das in einer Batch genauso wie im Beispiel machen kann.
Klar. Wenn PHP auch als CLI zur Verfügung steht (Du es via ssh starten kannst), dann führe mal
~$ which php
aus.
Das Ergebnis sieht etwa so aus:
/usr/bin/php
Im nächsten Schritt notierst Du das als „Shebang“ in der ERSTEN (sic: ersten!) Zeile des Skriptes:
#!/usr/bin/php
Achte auf das Ausrufezeichen und darauf, dass Dein Editor keine Unicode-BOM schreibt. (Meist unter „Kodierung“ einzustellen, fast nur bei Windows-Editoren ein „Problem“) Danach vergibst Du Dir selbst das Recht, das Skript auszuführen:
chmod 700 Skript.php
Starten kannst Du es dann mit
~$ ./Skript.php
oder mit
~$ /pfad/zu/Skript.php
Achte darauf, dass es nicht via Webserver abrufbar ist, denn es stehen ja Benutzername und Passwort für die Datenbank drin.
Eine zusätzliche Bremse kannst Du wie folgt einbauen:
#!/usr/bin/php
if ( ! empty( $_SERVER['DOCUMENT_ROOT'] ) ) {
exit;
}
Das sorgt dafür, dass das Skript stumpf abbricht, wenn es via Webserver ausgeführt wird, verhindert aber womöglich nicht, dass das Skript im Quelltext abgerufen wird. Lege es außerhalb des DOCUMENT_ROOT ab. Und vergib KEINE andere Endung!
Bei einem Aufruf mit
~$ ./Skript.php foo bar
also
$argv[0] → './Skript.php'
$argv[1] → 'foo'
$argv[2] → 'bar'
Das gezeigte Skript sieht nicht so aus, als müsstest Du Dir Sorgen wegen des Speichers machen.