PHP als Kommandozeilenprogramm

Tobsen84

Grünschnabel
Guten Tag,

Ich habe da zwei Sachen die ich etwas mehr erklärt haben möchte. Zum einen PHP als Exe und dann argv und argc.

Meine Situation:
Ich möchte meinem PHP Script über die Kommandozeile Werte übermitteln, daraus einen bestimmten Wert aufspühren und dann weiterverarbeiten.

Wie kann ich aus einem PHP Script eine ausführbare Datei machen? Ich hatte da etwas über Batch Dateien gelesen, komme damit aber nicht klar z.B. Werte an PHP übergeben.

Man kann doch mit $_SERVER["argv"]; und $_SERVER["argc"]; übergebenen Werte verarbeiten/anzeigen etc., oder? Nun habe ich keine Ahnung in welcher Form die Daten dann im Array argv stehen. Wie kann ich da einen bestimmten Wert abfangen, dessen Aufbau ich nur erahnen kann. Werden sowas wie -r oder so mit in den Array geschrieben oder nur die Werte?
 
Hallo,

hier mal ein kleines Beispiel. Vielleicht löst das ein paar Fragen.

PHP:
// inhalt der x.php (testfile)
print_r($_SERVER['argv']);
PHP:
// aufruf auf Konsolenebene (Linux)
/usr/bin/php x.php 1 2 3 4 5 a b c
PHP:
// Ausgabe in console
Array
(
    [0] => x.php
    [1] => 1
    [2] => 2
    [3] => 3
    [4] => 4
    [5] => 5
    [6] => a
    [7] => b
    [8] => c
)
Wie man sieht werden die Parameter beim Aufruf im array $_SERVER['argv'] abrufbar.
Unter http://de2.php.net/manual/de/features.commandline.php gibt es viele weitere Informationen. In den Kommentaren gibt es auch Beispiele, wie man die Paramenter, die man übergeben will, nicht per Integer Index aus $_SERVER['argv'] abfragt, sondern als assoziativer Index (Bsp: http://de2.php.net/manual/de/features.commandline.php#78093).

Zu argv und argc in $_SERVER sagt die Dokumentation (http://de2.php.net/manual/de/reserved.variables.php) folgendes:
'argv' In diesem Array sind die Argumente enthalten, die an ein Skript übergeben wurden. Wenn das Skript auf der Kommandozeile ausgeführt wird, haben Sie einen C-ähnlichen Zugriff auf die Kommandozeilenparameter. Wenn es mit der GET-Methode aufgerufen wird, enthält das Array den Abfragestring.

'argc' Enthält die Anzahl der Kommandozeilenparameter, die an das Skript übergeben wurden (falls es von der Kommandozeile aus aufgerufen wurde).
 
Zurück