Signatur
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;
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;
}
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();
// 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.