2013-05-07 20 views
7

Ich versuche, diesen Code auszuführen:undefinierte Variable argc PHP

function main(){ 
    if ($argc < 1){ 
    listDir("."); 
    } 
    else{ 
    for($i = 0; $i <= sizeof($argv); $i++){ 
     listDir($argv[$i]); 
    } 
    } 
} 

Aber ich die folgende Fehlermeldung erhalten:

PHP Notice: Undefined variable: argc in /home/me/test.php on line 15 

Ich dachte, dass $ argv und $ argc waren globale Variablen ! Wie kann ich diesen Fehler beheben? Vielen Dank.

+3

'$ argc' und' $ argv' werden nur beim Ausführen von der Befehlszeile automatisch ausgefüllt. Führen Sie dieses Skript über die Befehlszeile aus? –

+0

+1 @GeorgeCummins Ich war gerade dabei, das gleiche zu fragen – Bart

+0

Ich führe dies von der Befehlszeile – Pol0nium

Antwort

18

hinzufügen eine

global $argc, $argv; 

nach

function main() { 

Diese Variablen im globalen Bereich sind aber in ihrem Umfang nicht Ihre Funktion ist. Das globale Schlüsselwort importiert sie.

+1

Diese Variablen sind global. Es ist also ziemlich sinnlos, sie wieder global zu erklären. – Bart

+3

Gute Antwort! +1 @Bart, warum nicht vor dem Herunterladen testen? – hek2mgl

+1

@Bart diese Antwort ist gut - obwohl es global ist - wenn Sie es in einer Funktion verwenden möchten, sollten Sie es als solche deklarieren. – alfasin

3

Sie wollen wahrscheinlich

$argc = $_SERVER['argc']; 
$argv = $_SERVER['argv']; 
3

Ich hatte das gleiche Problem zu tun.

Sie können den Befehl follow ausführen.

$ php -i | grep argv #run this comand 

Will Ausgang dieses:

<tr><td class="e">register_argc_argv</td><td class="v"> Off</td><td class="v"> Off</td></tr> 

dies bedeutet, dass Ihre PHP nicht argv und argc

wenn ausgeschaltet registriert Sie Sie php.ini und als register_argc_argv = On gesetzt gehen.

Das löste mein Problem.

Verwandte Themen