Ausführen von PHP-Dateien

Es gibt drei verschiedene Wege, PHP-Code in der CLI SAPI auszuführen:

  1. PHP mitteilen, eine bestimmte Datei auszuführen.

    $ php my_script.php
    
    $ php -f my_script.php
    

    Beide Methoden (ob die Option -f verwendet wird oder nicht) führen die Datei my_script.php aus. Zu beachten ist, dass es keine Einschränkungen dafür gibt, welche Dateien ausgeführt werden können; beispielsweise muss das PHP-Skript nicht auf .php enden.

  2. Den auszuführenden PHP-Code direkt auf der Kommandozeile angeben.

    $ php -r 'print_r(get_defined_constants());'
    

    Es muss besonders Acht gegeben werden auf die Ersetzung von Kommandozeilenvariablen und Benutzung von Anführungszeichen.

    Hinweis:

    Achten Sie darauf, dass sie keine PHP-Tags übergeben. Die Option -r benötigt diese nicht und löst einen Parser-Fehler aus, falls sie dennoch verwendet werden.

  3. Eingabe des PHP-Codes über die Standardeingabe (stdin).

    Dies eröffnet die Möglichkeit, PHP-Code dynamisch zu generieren und anschließend an das PHP-Binary zu übergeben, wie in diesem (ausgedachten) Beispiel dargestellt:

    $ some_application | some_filter | php | sort -u > final_output.txt
    
Die drei Möglichkeiten zur Codeausführung können nicht kombiniert werden.

Wie jede Kommandozeilenanwendung nimmt das PHP-Binary etliche Argumente entgegen, aber auch das PHP-Skript kann Argumente entgegennehmen. Die Anzahl der Argumente, die an ein Skript übergeben werden können, ist nicht von PHP beschränkt (und obwohl die Kommandozeilenumgebung ein Limit für die Anzahl der Zeichen hat, die übergeben werden können, wird dieses im Allgemeinen nicht erreicht werden). Die Argumente, die dem Skript übergeben werden, sind in dem globalen Array $argv gespeichert. Der erste Index (Null) enthält immer den Skriptnamen. Wenn der Code mittels der Option -r ausgeführt wurde, ist der Wert von $argv[0] "Standard input code"; vor PHP 7.2.0 war es ein Bindestrich (-). Selbiges gilt für Code, welcher über STDIN ausgeführt wird.

Die zweite registrierte globale Variable ist $argc, welche die Anzahl der Elemente im Array $argv enthält, (nicht die Anzahl Argumente, die dem Skript übergeben wurden).

Solange die Argumente, welche dem Skript übergeben werden, nicht mit dem Zeichen - beginnen, gibt es nichts besonderes zu beachten. Ein Argument zu übergeben, welches mit - beginnt, wird jedoch Probleme bereiten, da PHP denkt, dass es das Argument selbst verarbeiten muss, noch bevor das Skript ausgeführt wird. Nutzen Sie das Argument-Trennzeichen --, um dies zu vermeiden. Nachdem dieses Trennzeichen von PHP geparst wurde, wird jedes folgende Argument unangetastet an das Skript weitergereicht.

# Dies führt nicht den angegebenen Code aus, sondern zeigt die Optionen von PHP an
$ php -r 'var_dump($argv);' -h
Usage: php [options] [-f] <file> [args...]
[...]

# Dies übergibt das Argument '-h' an Ihr Skript und zeigt die Optionen von PHP nicht an
$ php -r 'var_dump($argv);' -- -h
array(2) {
  [0]=>
  string(1) "-"
  [1]=>
  string(2) "-h"
}

Es gibt auf Unix-Systemen jedoch einen weiteren Weg, um PHP für Kommandozeilenskripte zu verwenden. Sie können ein Skript erstellen, in dem die erste Zeile mit #!/usr/bin/php beginnt (oder wie auch immer der Pfad zu Ihrer PHP-CLI-Binärdatei ist). Nachfolgend können Sie normalen PHP-Code innerhalb der PHP-Start- und -End-Tags verwenden. Sobald Sie die Datei ausführbar gemacht haben (beispielsweise mittels chmod +x test), kann Ihr Skript wie ein normales Kommandozeilen- oder Perl-Skript gestartet werden.

Beispiel #1 PHP als Shellskript ausführen

#!/usr/bin/php
<?php
var_dump
($argv);
?>

Angenommen, die Datei heißt test und befindet sich im aktuellen Verzeichnis, dann können wir nun folgendes tun:

$ chmod +x test
$ ./test -h -- foo
array(4) {
  [0]=>
  string(6) "./test"
  [1]=>
  string(2) "-h"
  [2]=>
  string(2) "--"
  [3]=>
  string(3) "foo"
}

Wie zu sehen ist, muss in diesem Fall keine besondere Rücksicht auf die Übergabe von Parametern genommen werden, die mit - beginnen.

Die ausführbare PHP-Datei kann verwendet werden, um PHP-Skripte vollkommen unabhängig von einem Webserver auszuführen. Auf Unix-Systemen sollte die spezielle erste Zeile #! ("Shebang") zu PHP-Skripten hinzugefügt werden, damit das System automatisch herausfinden kann, welches Programm zur Ausführung der Datei genutzt werden soll. Auf Windows-Systemen ist es möglich, php.exe mit der Doppelklick-Option der Erweiterung .php zu verknüpfen. Es kann auch eine Batchdatei erstellt werden, um das Skript von PHP ausführen zu lassen. Die erste Zeile, die dem Skript hinzugefügt wird, damit es unter UNIX läuft, stört unter Windows nicht, so dass auf diese Weise problemlos plattformübergreifende Programme geschrieben werden können. Im Folgenden wird anhand eines einfachen Beispiels gezeigt, wie ein PHP-Kommandozeilenprogramm geschrieben wird.

Beispiel #2 Ein Skript, das von der Kommandozeile aus ausgeführt werden soll (script.php)

#!/usr/bin/php
<?php

if ($argc != || in_array($argv[1], array('--help''-help''-h''-?'))) {
?>

Das ist ein Kommandozeilenprogramm in PHP mit einer Option.

  Verwendung:
  <?php echo $argv[0]; ?> <option>

  <option> kann ein Wort sein, das Sie gerne
  ausgeben möchten. Mit den Optionen --help,
  -help, -h oder -? bekommen Sie diese Hilfe.

<?php
} else {
    echo 
$argv[1];
}
?>

In dem oben beschriebenen Skript haben wir die erste Zeile dazu verwendet, anzugeben, dass die Datei von PHP ausgeführt werden soll. Wir arbeiten hier mit einer CLI-Version, deswegen werden keine HTTP-Header ausgegeben.

In dem obigen Programm wird zuerst überprüft, ob das notwendige Argument angeben ist (zusätzlich zum Skriptnamen, welcher auch gezählt wird). Wenn nicht, oder wenn das Argument --help, -help, -h oder -? war, wird eine Hilfe-Nachricht ausgegeben, welche $argv[0] nutzt, um den auf der Kommandozeile eingegebenen Skript-Namen auszugeben. Andernfalls wird das Argument genauso ausgegeben, wie es übergeben wurde.

Um das obige Skript unter UNIX auszuführen, muss es zuerst ausführbar gemacht werden, und danach einfach als script.php GebeDasHierAus oder script.php -h aufgerufen werden. Unter Windows kann zu diesem Zweck eine Batchdatei erstellt werden:

Beispiel #3 Batchdatei zur Ausführung eines Kommandozeilen-Skripts in PHP (script.bat)

@echo OFF
"C:\php\php.exe" script.php %*

Angenommen, das obige Programm wurde script.php genannt und die CLI php.exe hat den Pfad C:\php\php.exe, so wird diese Batchdatei es mit allen übergebenen Argumenten aufrufen: script.bat GebeDasHierAus oder script.bat -h.

Siehe auch die Readline-Erweiterung für weitere Funktionen, um PHP-Kommandozeilenanwendungen zu verbessern.

Unter Windows kann PHP so konfiguiert werden, dass es auch ausgeführt wird, wenn weder C:\php\php.exe angegeben wird, noch die Dateierweiterung .php genutzt wird. Siehe dazu die Dokumentation zur PHP-Kommandozeile unter Microsoft Windows.

Hinweis:

Unter Windows wird empfohlen, PHP unter einem echten User-Account auszuführen. Wird es unter einem Netzwerk-Account ausgeführt, werden bestimmte Operationen fehlschlagen, weil "keine Zuordnung zwischen Kontennamen und Sicherheits-IDs erfolgte".

Hier Kannst Du einen Kommentar verfassen


Bitte gib mindestens 10 Zeichen ein.
Wird geladen... Bitte warte.
* Pflichtangabe
Es sind noch keine Kommentare vorhanden.

Neuigkeiten für PHP-Entwickler: Laravel 11 Veröffentlichung

Am 12. März 2024 wurde die lang erwartete Version 11 des Laravel-Frameworks veröffentlicht, die eine Reihe von spannenden Neuerungen und Verbesserungen für die PHP-Entwicklungsgemeinschaft mit sich bringt. ...

Mike94

Autor : Mike94
Kategorie: PHP Magazin

Technisches SEO bleibt relevant

Technisches SEO – Was ist das überhaupt? Technisches SEO bezieht sich auf die Optimierung der technischen Aspekte deiner Webseite. Das Ziel ist klar! ...

admin

Autor : admin
Kategorie: SEO & Online-Marketing

Was ist neu in der PHP 8.2.10

PHP 8.2.10 ist eine der neuesten Versionen von PHP, die eine Reihe von Verbesserungen und neuen Funktionen mit sich bringt. In diesem Artikel werden wir einige der herausragenden Neuerungen und Verbesserungen dieser Version diskutieren. ...

admin

Autor : admin
Kategorie: Software-Updates

Tutorial veröffentlichen

Tutorial veröffentlichen

Teile Dein Wissen mit anderen Entwicklern weltweit

Du bist Profi in deinem Bereich und möchtest dein Wissen teilen, dann melde dich jetzt an und teile es mit unserer PHP-Community

mehr erfahren

Tutorial veröffentlichen

Seltsames Verhalten von execute() oder Fehler meinerseits

Hallo liebe Community, ich habe ein kleines Problem und vielleicht kann mir ja jemand helfen, würde ich mich sehr drüber freuen. Unten steht e ...

Geschrieben von garibaldiwz am 22.03.2024 13:03:12
Forum: SQL / Datenbanken
Google reCAPTCHA in Kontaktformular einbinden

Überprüfen Sie den E-Mail-Versand: Stellen Sie sicher, dass die E-Mail-Funktion mail() ordnungsgemäß funktioniert und dass keine Fehler beim V ...

Geschrieben von Gast am 18.03.2024 04:54:16
Forum: PHP Developer Forum
`count.php`

Hallo cober93327, und Danke fuer deine Antwort! :-) Naja, so einen "Besucherzähler" auf der Webseite anzuzeigen ist schon eher etwas, das man a ...

Geschrieben von kekse1 am 17.03.2024 15:56:38
Forum: Projekthilfe
`count.php`

Es gibt dazu natuerlich auch eine recht ausfuehrliche Dokumentation in meinem GitHub-Repository Es würde meiner Ansicht nach enorm helfen, wenn D ...

Geschrieben von cober93327 am 14.03.2024 15:49:28
Forum: Projekthilfe