Frage

lade ich dynamisch PHP-Klasse-Dateien mit automatischem Dokumenteneinzug. Und diese Dateien aus irgendeinem Grund fehlt oder beschädigt werden könnten.

Autoload erfolgreich melden Sie fehlende Dateien, so dass die Anwendungslogik umgehen kann. Aber wenn diese Dateien beschädigt sind, dann ist die gesamte Verarbeitung stoppt mit leeren Bildschirm für den Benutzer und „PHP Parse error: syntax error“. Im Fehlerprotokoll

Ist es möglich, Syntax von PHP-Datei von PHP-Code zu überprüfen?

Ich habe hier sah: http: // uns. php.net/manual/en/function.php-check-syntax.php -. es ist veraltet

Und

exec("php -l $file");

scheint einen falschen Weg zu sein ( http://bugs.php.net/bug .php? id = 46339 )

Die Gedanken?

War es hilfreich?

Lösung

Sie sollten wirklich nicht versuchen, für nicht-korrekte PHP-Dateien zur Ausführungszeit zu überprüfen: es wird die Reaktionszeit der Anwendung töten

!

A „besserer Weg“ wäre php -l von der Kommandozeile zu verwenden, wenn Sie einen PHP-Skript fertig sind modifizieren; oder ist es in Ihrem Build-Prozess, wenn Sie eines verwenden; oder stecken Sie es als SVN pre-commit Haken, wenn Sie SVN verwenden und definieren SVN Haken .

Meiner Meinung nach, fast jede gegebene Lösung wäre besser, als dass sie die Überprüfung zur Ausführungszeit!


Betrachtet man Fehler wie die, die Sie wahrscheinlich oft nicht passieren wird, vermeiden wollen, ist es wahrscheinlich besser, ... sie einfach geschehen lassen.
Sache ist: aktivieren Protokolle und überwachen sie, der Lage sein, schnell zu erkennen, wenn Tere ein Problem ist: -)


Natürlich bedeutet dies nicht verhindern, dass der Fall aus dem Umgang Dateien fehlen; aber das ist eine andere Sache ...

Andere Tipps

Eine andere Art und Weise können Sie eine PHP-Datei in Ihrem Stammverzeichnis machen aufgerufen     checkSyntax.php

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

Jetzt, öffnen Sie Ihre bashrc eine Verknüpfung machen diese Datei ausführen. hinzufügen unterhalb der Linie checkSyntax.php

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

und jetzt liest Ihr Quellverzeichnis svn st tun.

zeigt es Ihnen Liste der Dateien nun einfach den Befehl ausführen.

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

Prüft alle Dateien als Argumente übergeben.

genießen:)

Kurz gesagt:. Ich kann nicht sehen, wie man dies zu tun, aber eine Idee hat, was ausreichend sein könnte

Es gibt Überwachungsprogramme protokollieren oder die Protokolle über Standard-Tools für Dateien mit Parse-Fehler filtern. Wenn eine Datei angezeigt wird, setzen Sie den Bösewicht Dateinamen in eine schwarze Liste und Ihre Autoloader prüft vor Belastung mit dieser Liste.

Mit dieser Methode zum ersten Mal werden Sie einen leeren Bildschirm dienen (assumig Fehler an den Ausgang Berichterstattung auf Produktionsservern eingeschaltet), aber der zweite wird eine Seite ohne die fehlerhafte Komponente hat.

In dem Autoloader eine Liste oder Namensschema zu laden obligatorische Klassen immer versuchen, (andere Möglichkeiten, um Ihre Anwendung möglicherweise in einem inkonsistenten Zustand)

haben solltest

Sie können auch einige Unit-Tests tun, in dem Sie die PHP laden sind Sie dynamisch ausführt und behaupten, dass exec ( „php -l $ filename“) gültig. Wenn Sie getan haben, dass Sie in der Lage sein würden es einmal in Ihren Tests zu überprüfen, sie mit entsprechenden Variablen zu erzeugen, und hat ein vernünftiges Maß an Vertrauen Ihrer PHP war gut.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top