|
PHP für die Konsole
PHP ist als Servertechnologie für die Erstellung dynamischer Webseiten bestens bekannt. Seit Version 4.3.0 (erschienen Ende 2002) können Sie mit PHP aber auch Shell-Skripte erstellen – im Prinzip genauso, wie das mit Sprachen wie Perl, Python und Ruby möglich ist. Wenn Sie auf der Kommandozeile php -v aufrufen, erscheint folgende Ausgabe (vorausgesetzt, Sie verwenden Version 4.3 oder höher):
ich@meinrechner:~> php -v PHP 4.3.10 (cli) (built: Mar 22 2005 19:34:44) ...
Wichtig ist hier: PHP 4.3.10 (cli). Das unscheinbare Kürzel cli (bedeutet command line interface) deutet daraufhin, dass Sie PHP auf der Konsole verwenden dürfen. Ein PHP-Skript muss dann logischerweise den Pfad zum Interpreter kennen (die sogenannte Shebang-Zeile). In der Regel sieht die erste Zeile eines Skriptes so aus: #!/usr/bin/php. Sie ermitteln den Interpreter-Pfad mit:
ich@meinrechner:~> which php /usr/bin/php
Im Beispiel befindet sich der Interpreter bereits im Pfad, weshalb die Shebang-Zeile entfallen kann (mit echo $PATH ermitteln Sie, welche Verzeichnisse im Pfad stehen). Hier das erste Beispiel für ein Konsolen-Skript (Achtung: für alle Skripte wurde PHP 4.3.10 unter Suse 9.3 verwendet).:
#!/usr/bin/php
<?php print "Hallo Bash!" . "\n"; print date("d.m.Y.") . "\n"; ?>
Speichern Sie das Skript als first.php und rufen Sie es auf:
ich@meinrechner:~> php first.php
Hallo Bash! 24.10.2005.
Das nächste Skript baut eine Verbindung zu einer Datenbank auf (MySQL, Server-Version 4.1.10a). Auf diese Weise lässt sich überprüfen, ob der MySQL-Server am Standardport 3306 lauscht (Datei db_checker.php).
#!/usr/bin/php
<?php class CheckDB { var $host = "localhost"; var $user = "root"; function check_db($pass) { $conn = mysql_connect($this->host, $this->user, $pass); if (empty($conn)) { die("\nmysqli_connect error\n"); exit(); } echo "*** " . mysql_get_host_info() . " ***\n"; mysql_close($conn); }
} // end class
function main($pass) { $db = new CheckDB(); $db->check_db($pass); }
# start script echo "Enter passwd > "; main(trim(fgets(STDIN))); ?>
Einige Anmerkungen: wie gesagt, das Skript stellt eine Verbindung zum Datenbank-Server her und teilt mit, auf welche Weise die Verbindung zustande kam. In der main()-Funktion wird eine Instanz der Klasse CheckDB erzeugt und anschließend deren einzige Methode aufgerufen. Unter dem Kommentar # start script befindet sich der Code zum Einlesen des Passworts von der Kommandozeile. Mit trim() sorgen Sie dafür, dass die eingegebene Zeichenkette sauber eingelesen wird; mit fgets(), die Funktion wurde von C „ausgeborgt“, lesen Sie die Eingabe direkt vom Standard-Eingabekanal (STDIN, üblicherweise die Konsole). Speichern Sie das Programm als db_checker.php und rufen Sie es auf:
ich@meinrechner:~> php db_checker.php
Enter passwd > mein_passwort *** Localhost via UNIX socket ***
Geben Sie das richtige Passwort ein, sonst gibt es eine Fehlermeldung. Natürlich können Sie das Skript mit dem Befehl chmod 755 db_checker.php ausführbar machen. Dann sieht der Aufruf so aus: ich@meinrechner:~> ./db_sample.php
Thomas Kaufmann
[1] PHP Home: http://www.php.net/
|