15. Oktober 2007 Unix Befehle in PHP

in Kategorie PHP

Tags: , , ,


Wer mit Shell–Scripts bisher nichts anfangen konnte für den gibt es eine Alternative von der er vielleicht noch gar nichts weiß. Wer mit einem Linux/Unix–System arbeitet der möchte mit solchen Scripts oft wiederkehrende Arbeitsabläufe automatisieren. Doch als PHP–Programmierer ist es gar nicht nötig eine neue Scriptsprache zu erlernen. PHP–Scripts können — mit der richtigen Konfiguration — genauso einfach von der Konsole ausgeführt werden.

PHP auf der Kommandozeile

PHP bietet seit Version 4.3.0 das sogenannte CLI (»Command Line Interface«). Das ermöglicht uns PHP–Dateien in der Konsole aufzurufen und ausführen zu lassen. Damit das System auch weiß welchen Interpreter es für das aufgerufene Script verwenden soll, muss die Datei den folgenden Aufbau haben:

#!/usr/bin/php
<?php
	// dein PHP-Code
?>

Der Pfad in der ersten Zeile sollte auf den entsprechenden PHP–Interpreter zeigen. Ab und zu liegt dieser auch im Verzeichnis /usr/local/bin/php.

Ungeahnte Möglichkeiten

In einem solchen Script kann wie bisher ganz normaler PHP–Code ausgeführt werden. Der Zugriff auf Datenbanken ist genauso möglich wie das Öffnen und Schreiben von Dateien. Sämtliche Ausgabebefehle leiten ihre Ausgabe nun an die Konsole. Das ist aber noch nicht alles.

Was ist, wenn wir zum Beispiel ein Backup mit rsync vornehmen wollen? Wenn wir den Apache Server neu starten möchten? Alles kein Problem! Mit den Befehlen »exec()« und »shell_exec()« können Kommandozeilenbefehle ausgeführt werden:

#!/usr/bin/php
<?php
	// einen beliebigen Befehl ausführen
	exec('touch /myFile.txt');
 
	// Befehl ausführen und Rückgabe ausgeben
	$output = shell_exec('ls -l');
	echo $output;
 
	// das selbe mit dem "backtick operator"
	$output = `ls -l`;
	echo $output;
?>

Der Befehl »exec()« führt lediglich ein Shellkommando aus, »shell_exec()« hingegen gibt auch die Ausgabe des ausgeführten Befehls als String zurück. Der »Backtick Operator« im letzten Beispiel ist äquivalent zu »shell_exec()« und tut deshalb genau das selbe.

Fazit

Als PHP–Programmierer kann man die Vorzüge der Kommandozeile auch ohne Shell–Script kennen lernen. PHP ist hierbei meiner Meinung nach sogar viel mächtiger. Und falls ein Befehl in PHP direkt nicht zur Verfügung steht so können auch die Shell–Befehle verwendet werden. Es gibt auch einige Pear–Packete speziell für die Konsole. Damit lassen sich auch komplexere Konsolenscripts erstellen.

Ähnliche Artikel


Der Beitrag wurde am Montag, den 15. Oktober 2007 um 10:37 Uhr veröffentlicht und wurde unter PHP abgelegt. du kannst die Kommentare zu diesen Eintrag durch den RSS 2.0 Feed verfolgen. du kannst einen Kommentar schreiben, oder einen Trackback auf deiner Seite einrichten.

Kommentare

Keine Reaktion zu “Unix Befehle in PHP”.

Einen Kommentar schreiben