![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 521 Pomógł: 0 Dołączył: 3.11.2003 Skąd: 3city Ostrzeżenie: (0%) ![]() ![]() |
Chciałbym sobie - z poziomu skryptu php - wczytać z dysku jakiś inny skrypt i sprawdzić, czy jest on poprawny składniowo. Potem można by wysłać do usera info: "tak, plik jest OK" lub "nie, jest błąd w linii tej a tej".
Problemy są dwa: 1) Chcę tylko sparsować plik, a nie wykonywać. Temu akurat można zaradzić wstawiając przed kodem do sprawdzenia return, coś w stylu: [php:1:dcb9e2b8c6]<?php eval(' return; ' . file_get_contents('foo.php')); ?>[/php:1:dcb9e2b8c6] Wtedy jedyne błędy to będą błędy parsowania lub błędy kompilatora, czyli te o które chodzi. 2) Tutaj jest pies pogrzebany: można sobie zrobić set_error_handler i przechwytywać błędy, ale błedy parsowania zawsze są brutalnie wywalane na wyjście i kończą skrypt. Kompletnie olewają mój piękny error handler (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) . Tak więc, czy ktoś zna sposób na sprawdzenie poprawności pliku (lub stringa, na jedno wychodzi) bez jego wykonywania i bez wywalania całego skryptu w przypadku błędu? Przecież php robi to bez przerwy, php.exe chyba ma taki switch, analizator lexykalny jest dostępny (tokenizer), a tu nie można sparsować głupiego kawałka kodu (IMG:http://forum.php.pl/style_emoticons/default/angrysmiley.gif) . |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 1 717 Pomógł: 0 Dołączył: 12.06.2002 Skąd: Wolsztyn..... Studia: Zielona Góra Ostrzeżenie: (0%) ![]() ![]() |
Cytat - nie potrafię ustalić w skrypcie gdzie znajduje się php.exe
pod Unixem wywolac which php, pod windowsem gorzej... mozna sprobowac odczytac przez ini_get wartosc extension_dir, mysle ze 99% ma ta sciezke nie zmieniona, czyli w katalogu php Cytat - coś u siebie namieszałem w php bo php.exe nie znajduje bibliotek i w ogóle nie rusza
Wersja CLI/CGI php szuka php.ini tam gdzie sie odpala, a pewnie masz php.ini w windowsie albo katalogu apache'a... jak nie chcesz drugiej kopii php.ini no to mozesz jeszcze do php.exe przekazac parametr -c sciezka/do/php.ini Cytat Ale ogólnie to powinno działać. Co do zabezpieczenia systemu: podobno php.exe ma switcha który powoduje że skrypt jest tylko parsowany, nie wykonywany.
Podobno ma (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Kod -l Syntax check only (lint)
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 5.10.2025 - 14:54 |