Domanda

Carico dinamicamente file di classe PHP con caricamento automatico. E quei file potrebbero essere mancanti o danneggiati per qualche motivo.

Il caricamento automatico riporterà correttamente i file mancanti in modo che la logica dell'applicazione possa gestirlo. Ma se quei file sono danneggiati, l'intera elaborazione si interrompe con una schermata vuota per l'utente e "PHP Parse error: errore di sintassi " nel registro degli errori.

È possibile controllare la sintassi del file PHP dal codice PHP?

Ho visto qui: http: // us. php.net/manual/en/function.php-check-syntax.php - è obsoleto.

E

exec("php -l $file");

sembra essere un modo sbagliato ( http://bugs.php.net/bug .php? id = 46339 )

Pensieri?

È stato utile?

Soluzione

In realtà non dovresti provare a verificare la presenza di file PHP non corretti al momento dell'esecuzione: ucciderà i tempi di risposta della tua applicazione!

Un "modo migliore" sarebbe usare php -l dalla riga di comando quando hai finito di modificare uno script PHP; o includilo nel tuo processo di compilazione se ne usi uno; oppure collegalo come hook di pre-commit SVN se stai utilizzando SVN e puoi definire ganci SVN .

Secondo me, quasi ogni soluzione data sarebbe meglio che verificarla al momento dell'esecuzione!


Considerando errori come quelli che vuoi evitare probabilmente non accadranno spesso, è probabilmente meglio ... lasciali semplicemente accadere.
L'unica cosa è: attivare i log e monitorarli, essere in grado di rilevare rapidamente quando c'è un problema :-)


Naturalmente, questo non ti impedisce di affrontare il caso di file mancanti; ma è una questione diversa ...

Altri suggerimenti

Un altro modo in cui puoi creare un file php nella tua directory root chiamato     checkSyntax.php

<?php
for($i=1; $i < count($argv); $i++){
        $temp = "php -l " . $argv[$i];
        $output = exec($temp);
        echo "\n$output";
}
?>

ora, apri il tuo file bashrc per creare un collegamento per eseguire questo file. aggiungi sotto la riga per eseguire checkSyntax.php

alias checkSyntaxErrors='php /root/checkSyntax.php'

e ora vai alla tua directory sorgente fai svn st.

mostra l'elenco dei file, ora esegui facilmente il comando.

checkSyntaxErrors file1.php file2.php .......

questo controllerà tutti i tuoi file passando come argomenti.

divertiti :)

In breve: non riesco a vedere un modo per farlo, ma ho un'idea che potrebbe essere sufficiente.

Esistono programmi di monitoraggio dei registri o possono filtrare i registri tramite strumenti standard per file con errori di analisi. Se viene visualizzato un file, inserisci il nome file del malvagio in una lista nera e il caricatore automatico verifica prima di caricare questo elenco.

Con questo metodo, per la prima volta viene visualizzata una schermata vuota (presupponendo che gli errori che riportano all'output siano attivati ??sui server di produzione) ma il secondo avrà una pagina senza il componente difettoso.

Nel caricatore automatico dovresti avere un elenco o uno schema di denominazione per provare sempre a caricare le classi obbligatorie (in altri modi in cui l'applicazione potrebbe trovarsi in uno stato incoerente)

Potresti anche eseguire alcuni test unitari, in cui carichi il PHP che stai eseguendo in modo dinamico e asserisci che exec (" php -l $ fileName ") è valido. Se lo facessi, saresti in grado di verificarlo una volta nei test, generandolo con variabili appropriate e avere un ragionevole livello di confidenza che il tuo PHP era buono.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top