2010-10-25 25 views
9

Dopo aver aggiornato a PHP 5.3, la mia domanda è stata inondata conPHP 5.3: "Dichiarazione di ... dovrebbe essere compatibile con quello di ..." Errore

"Dichiarazione di ... dovrebbe essere compatibile con quello di ... "

errori di stile. Capisco la natura di questi errori, ma desidero disabilitarli.

Il error_reporting setting in php.ini è "E_ALL & ~(E_NOTICE | E_DEPRECATED)", ma questo errore continua a essere visualizzato. Ho pensato che fosse incluso nel E_STRICT, ma ho sbagliato?

+0

Non dice che tipo di errore è? –

+8

Questi sono in effetti errori 'E_STRICT', ma ma IMO dovresti correggere le loro cause invece dei loro rapporti. Mantieni il tuo codice pulito. – Gordon

+5

Non è una questione di codice pulito. L'errore è il risultato del metodo di una classe figlia con argomenti extra rispetto allo stesso metodo nella classe genitore. In particolare, è una funzione _defaultAction() per una classe controller. Le azioni predefinite estese possono benissimo accettare argomenti non trattati dalla classe genitore. Potrei facilmente usare func_get_args() per aggirare il problema, ma la dichiarazione del metodo è completamente priva di significato rilevante. – Ethan

risposta

12

È un errore E_STRICT. Modifica dell'impostazione php.ini su E_ALL & ~(E_NOTICE | E_DEPRECATED | E_STRICT) ...

Tuttavia, dovrebbe essere disattivato per impostazione predefinita (non è incluso in E_ALL). Quindi, se li stai prendendo, significa che è stato acceso da qualche parte. La domanda è, dove? Dichiarare error_reporting(...) ovunque nei file? Se è così, controllali. Se no, allora essere sicuri che si sta modificando il file php.ini destra (controllare phpinfo()) ... Si può sempre fare un grep per E_STRICT per cercare di trovare dove è in fase di accensione ...

+1

potrebbe anche essere abilitato usando 'error_reporting (-1)' che è il modo raccomandato di abilitare tutti gli errori sulle macchine di sviluppo. – Gordon

+0

Ho cambiato l'impostazione in php.ini, ma l'errore appare ancora. Non è impostato altrove (controllato tramite grep) e la modifica del valore error_reporting in fase di esecuzione non ha alcun effetto. Inoltre, la riga a cui si fa riferimento nell'errore è sempre la linea in cui viene dichiarata la classe figlia, se questo fa luce sul problema. – Ethan

+4

Per completezza, 'E_STRICT' * è * incluso in' E_ALL' a partire da 5.4. – ladenedge

0

Let me tell hai una buona impostazione.

È possibile modificare php.ini, in questo file, è possibile cercare una frase come ignore_repeated_errors = Off, è necessario modificare lo stato su on.

Se si verifica anche lo stesso tipo di errore, è necessario impostare Costanti del livello di errore.