|
Inhalt Menü Ausschalten |
PHP BatchPHP-Scripte werden normalerweise vom einen Webserver aus gestartet, aber es ist
auch möglich diese direkt in der Eingabeaufforderung zu starten. Warum sollte
man das tun? - PHP hat hervorragende Dateisystem-Funktionen, Reguläre
Ausdrücke, einfache http-Funktionen und ist mit Modulen erweiterbar. Damit kein
unnötiger HTML-Code ausgegeben wird, gibt es ein spezielle CLI-Version (Command
Line Interface). Zusätzlich wird noch eine DLL-Datei ( #!/bin/php <?php echo "Hello World!"; ?> Unter Windows geht das so nicht. Der normale weg, wäre über die
Eingabeaufforderung: Das funktioniert unter folgenden Bedingungen:
@php -r"eval(preg_replace('/.+<\?\w*(.+)\?>/s','\1',implode('',file('%0'))));" -- %1 %2 %3 %4 %5 %6 %7 %8 %9
@goto:eof
<?php
echo "Hello World!";
?>
Zuerst wird das Script mit PHP geladen und anschließend wird das eigentliche PHP-Script mit Regulären Ausdrücken extrahiert, was dann an eval zusammen mit 9 optionalen Argumenten übergeben wird. Für einfache Aufgaben wird es sicherlich reichen, aber beim Einsatz von Erweiterungen oder anderen Speziellen Aufgaben wird es Probleme geben:
Da DOS und PHP Umgebungsvariablen beherrschen kann man viele Probleme praktisch umgehen. Die folgene Lösung ist etwas komplexer aber auch Komfortabler:
@set self=%0
@if %php%*==* set php=php
@if exist php.ini set phpini=-cphp.ini
@if "%phpini%"=="" set phpini=-dextension_dir=./
@%php% %phpini% -r"$_SERVER['argv'][0]=str_replace(chr(34),'',getenv('self'));if($var=implode('',file($_SERVER['argv'][0].((file_exists($_SERVER['argv'][0]))?'':'.bat'))))eval(preg_replace('/([\S](?=.*<\?)|^<\?\w*|^\?>\s*$)/ms','',$var));if(substr(getenv('self'),1,-1)==$_SERVER['argv'][0])passthru('pause');" -- %1 %2 %3 %4 %5 %6 %7 %8 %9
@goto:eof
<?php
echo "Hello World!";
?>
Als erstes wird von DOS der Pfad zum Script gesichert, anschließend wird die Variable PHP gesetzt, wenn sie noch nicht gesetzt war und zuletzt wird geprüft, ob sich eine PHP.ini im aktuellen Verzeichnis befindet und entsprechend wird die Variable phpini gesetzt. Nun wird alles an PHP übergeben: PHP wertet diese Parameter aus, und startet das PHP-Script. Zum Schluss wird noch auf ein Tastendruck gewartet, wenn das Script vom Explorer gestartet wurde. Es können zwei Umgebungsvariablen gesetzt werden:
Weitere Funktionen:
Download
|
|||||||||||||||||
