Allora non capisco dove tu abbia preso argv e argc, che sono due variabili che si usano SOLO con php via linea di comando. Peraltro nel tuo script sarebbero comunque inutili perche' le inizializzi ad array (o stringhe) vuoti all'inizio, rendendo di fatto nullo il valore che vuoi elaborare.

Definisci $parola e poi lo sovrascrivi con un valore inesistente di un array vuoto, per tua stessa definizione. Chiaro che php si lamenta

Prova questa versione (il codice delle combinazioni non l'ho guardato, ho solo fatto un po' d'ordine tra le variabili)

Codice PHP:
<?php

#Genera tutte le possibili combinazioni ricevendo in ingresso una stringa con tutti caratteri #diversi.

$parola="1234";

$giaestratte = array();
$finali = array();
for(
$i=1,$a=1;$i<=strlen($parola);$i++){
    
$a*=$i;
}
echo 
"$a Combinazioni Disponibili.\n";
for(
$i=0;$i<$a;$i++){
    
$estratta Genera($parola);
    while(
in_array($estratta,$giaestratte)){
        
$estratta Genera($parola);
    }
    
$giaestratte[] = $estratta;
    
$finali[] = $estratta;
}
print_r($finali);


function 
Genera($parola){
    
$estratti = array();
    for(
$b=0;$b<strlen($parola);$b++){
        
$random mt_rand(0,strlen($parola)-1);
        while(@
in_array($random,$estratti)){
            
$random mt_rand(0,strlen($parola)-1);
        }
        
$estratti[] = $random;
        
$lettere[$b].=$parola[$random];
    }
    unset(
$estratti);
    foreach(
$lettere as $parola){
        
$a.=$parola;
    }
    return 
$a;
}


#Genera($parola);

?>