2013-05-07 13 views
7

Próbuję wykonać ten kod:niezdefiniowana zmienna argc PHP

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

Ale ja otrzymuję następujący błąd:

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

myślałem że $ argv i $ argc były zmienne globalne ! Jak mogę pozbyć się tego błędu? Dziękuję Ci.

+3

'$ argc' i' $ argv' są automatycznie wypełniane tylko podczas uruchamiania z wiersza poleceń. Czy uruchamiasz ten skrypt z wiersza poleceń? –

+0

+1 @GeorgeCummins Właśnie miałem zapytać o to samo – Bart

+0

Używam tego z linii poleceń – Pol0nium

Odpowiedz

18

dodać

global $argc, $argv; 

po

function main() { 

zmienne te są w zasięgu globalnym, ale nie w ramach swojej funkcji. Globalne słowo kluczowe je importuje.

+1

Te zmienne są globalne. Tak więc bezcelowe jest ogłaszanie ich globalnie. – Bart

+3

Dobra odpowiedź! +1 @Bart dlaczego nie testować przed downvote? – hek2mgl

+1

@Bart ta odpowiedź jest dobra - nawet jeśli jest globalna - jeśli chcesz użyć jej wewnątrz funkcji, powinieneś ją zadeklarować jako taką. – alfasin

3

prawdopodobnie chcesz zrobić

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

miałem ten sam problem.

Możesz uruchomić polecenie follow.

$ php -i | grep argv #run this comand 

wyjście będzie to:

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

to oznacza, że ​​PHP nie rejestruje argv i argc

jeśli jest wyłączony można przejść do ciebie php.ini i ustawić go jako register_argc_argv = On.

To rozwiązało mój problem.

Powiązane problemy