2013-05-07 19 views
7

Sto cercando di eseguire questo codice:indefinito argc variabile PHP

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

Ma sto ottenendo il seguente errore:

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

ho pensato che $ argv e $ argc erano variabili globali ! Come posso sbarazzarmi di questo errore? Grazie.

+3

'$ argc' e' $ argv' vengono popolati automaticamente solo quando si esegue dalla riga di comando. Stai eseguendo questo script dalla riga di comando? –

+0

+1 @GeorgeCummins Stavo per chiedere lo stesso – Bart

+0

Sto eseguendo questo dalla riga di comando – Pol0nium

risposta

18

aggiungere un

global $argc, $argv; 

dopo

function main() { 

Queste variabili sono di portata globale, ma non in ambito di vostra funzione. La parola chiave globale li importa.

+1

Quelle variabili sono globali. Quindi è piuttosto inutile dichiararli di nuovo globali. – Bart

+3

Buona risposta! +1 @Bart perché non testare prima di downvote? – hek2mgl

+1

@Bart questa risposta è buona - anche se è globale - se vuoi usarla all'interno di una funzione devi dichiararla come tale. – alfasin

3

probabilmente si vuole fare

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

Ho avuto lo stesso problema.

È possibile eseguire il comando follow.

$ php -i | grep argv #run this comand 

uscita sarà questo:

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

questo significa che il tuo PHP non sta registrando argv e argc

se è fuori si può andare a te php.ini e impostarlo come register_argc_argv = On.

Questo ha risolto il mio problema.