Auf PHP-Syntaxfehler prüfen?

9

Nun, ich bin hier ein bisschen pickle. Ich muss einige PHP auf Syntaxfehler überprüfen. Ich habe bemerkt, dass dieses Bit von der Kommandozeile laufen muss:

php -l somefile.php

Gibt es jedoch eine Möglichkeit, dies in einer PHP-Datei selbst auszuführen? Ich habe gesucht und denke, dass ich parse_str -Funktion irgendwie verwenden kann, um dies zu erreichen, indem Sie es in ein $ _GET eingeben, aber ich kann nicht ganz verstehen, wie das funktioniert.

Jemand anders hat mir gesagt, dass ich die Funktion token_get_all() php verwenden soll, um das festzustellen.

Aber ich kann nicht herausfinden, wie man das mit irgendeinem Ansatz macht? Kann mir hier jemand einen Beispielcode geben, um vielleicht loszulegen? Ich denke nicht, dass eval() zu verwenden ist, obwohl ich ein eval($code) funktionierte, aber denke nicht, dass ich das Skript ausführen sollte, wenn PHP-Syntaxfehler vorliegen.

Jede Hilfe wird wie immer sehr geschätzt!

    
Solomon Closson 14.08.2012, 21:01
quelle

6 Antworten

5

Sie könnten shell_exec() einfach so machen:

%Vor%

Dies gibt Ihnen die Ausgabe der Befehlszeilenoperation in der Zeichenfolge $output .

    
Mike Brant 14.08.2012 21:10
quelle
2

Es ist sicherer, den Rückkehrstatus von php -l

zu überprüfen %Vor%

Siehe diese Geige , um sie in Aktion zu sehen

    
Mandy S 29.05.2017 07:25
quelle
1

php_check_syntax sollte den Trick machen. Wenn Sie PHP & gt; = 5.05 ausführen, lesen Sie den ersten Kommentar im Kommentarabschnitt für die Implementierung.

    
wanovak 14.08.2012 21:03
quelle
1

Warum sollte die Shell überhaupt benutzt werden?

%Vor%

Alternativ verwenden Sie $e->getMessage() für weitere Informationen.

    
kjdion84 17.07.2017 05:14
quelle
0

Ich würde es so machen:

%Vor%     
Samuil Banti 14.12.2015 10:12
quelle
0

Sie können exec verwenden, um nach Syntaxfehlern zu suchen.

%Vor%

Leider erhalten Sie damit nicht die Zeilennummer oder sagen Ihnen etwas über den Fehler. Dazu müssen Sie entweder den statischen Analyzer auf Ihrem Server installieren Gibt es einen statischen Code-Analysator [wie Lint] für PHP-Dateien? oder schreiben Sie Ihren eigenen Parser.

NB. token_get_all() wird nichts eigenständig bestimmen, aber es ist eine nützliche Funktion, um einen Parser zu erstellen.

    
Dan Bray 10.02.2017 02:47
quelle

Tags und Links