Start · Sprachen · PHP · Referenz · $argc

$argc

Superglobal

Enthält die Anzahl der Argumente, die beim Aufruf eines PHP-Skripts über die Kommandozeile übergeben wurden.

seit PHP 4.0.0 Kategorie: http

Signatur

int $argc

Beschreibung

$argc ist eine von PHP automatisch befüllte Variable, die die Anzahl der Argumente enthält, mit denen ein Skript per Kommandozeile (CLI) aufgerufen wurde. Der Skriptname selbst wird dabei als erstes Argument gezählt, sodass $argc immer mindestens den Wert 1 hat, wenn das Skript direkt ausgeführt wird.

Die Variable steht nur im CLI-Modus sinnvoll zur Verfügung. Im Web-Kontext (z. B. Apache, Nginx, FPM) ist $argc in der Regel nicht gesetzt oder hat den Wert 0, da keine Kommandozeilenargumente vorhanden sind. Sie ist eng mit $argv verknüpft, das die tatsächlichen Argumentwerte als Array enthält.

$argc ist im globalen Gültigkeitsbereich direkt verfügbar. Innerhalb von Funktionen oder Methoden muss sie – wie andere globale Variablen – entweder per global $argc; importiert oder über $_SERVER['argc'] abgerufen werden, da $_SERVER['argc'] überall verfügbar ist.

Typische Einsatzgebiete sind CLI-Tools, Cronjob-Skripte und Build-Skripte, bei denen geprüft werden soll, ob die korrekte Anzahl an Parametern übergeben wurde, bevor das Skript seine Arbeit aufnimmt.

Beispiele

Mindestanzahl von Argumenten prüfen

<?php
// Aufruf: php skript.php eingabe.txt ausgabe.txt

if ($argc < 3) {
    echo "Verwendung: php " . $argv[0] . " <eingabe> <ausgabe>" . PHP_EOL;
    exit(1);
}

$eingabe  = $argv[1];
$ausgabe  = $argv[2];

echo "Verarbeite '{$eingabe}' → '{$ausgabe}'" . PHP_EOL;
Verarbeite 'eingabe.txt' → 'ausgabe.txt'

Alle übergebenen Argumente auflisten

<?php
// Aufruf: php liste.php foo bar baz

echo "Anzahl der Argumente (inkl. Skriptname): {$argc}" . PHP_EOL;

for ($i = 0; $i < $argc; $i++) {
    echo "  argv[{$i}] = {$argv[$i]}" . PHP_EOL;
}
Anzahl der Argumente (inkl. Skriptname): 4 argv[0] = liste.php argv[1] = foo argv[2] = bar argv[3] = baz

Zugriff innerhalb einer Funktion via $_SERVER

<?php
// Aufruf: php tool.php --verbose

function zeigeArganzahl(): void {
    // $argc ist hier nicht direkt verfügbar
    $anzahl = $_SERVER['argc'];
    echo "Skript wurde mit {$anzahl} Argument(en) aufgerufen." . PHP_EOL;
}

zeigeArganzahl();
Skript wurde mit 2 Argument(en) aufgerufen.

// Wichtig · Fallstricke

Nur im CLI-Modus: Im Web-Kontext (SAPI: Apache, FPM, CGI) ist $argc typischerweise 0 oder gar nicht gesetzt. Eine Verwendung außerhalb der CLI ist daher nicht sinnvoll und kann zu unerwartetem Verhalten führen.

php.ini-Einstellung: Die automatische Befüllung von $argc und $argv hängt von der Direktive register_argc_argv in der php.ini ab. Im CLI-SAPI ist diese standardmäßig aktiviert; in anderen SAPIs ist sie häufig deaktiviert. Ist die Direktive deaktiviert, sind beide Variablen nicht verfügbar.

Gültigkeitsbereich: Innerhalb von Funktionen und Methoden muss global $argc; verwendet werden oder alternativ $_SERVER['argc'], das überall zugänglich ist.

Siehe auch