Ustawienie wartości php error_reporting za pomocą parametru konsoli

11

Aby przetestować moje projekty PHP pod kątem błędów, zwykle używam tego polecenia:

find ./ -type f -name \*.php -exec php -l '{}' \; | grep -v "No syntax errors detected"

Chciałbym rozszerzyć tę część php -l '{}' \;o niektóre parametry, aby używał niestandardowego poziomu raportowania błędów, a nie tego zdefiniowanego w php.ini. czy to możliwe?

(Wiem, że pytanie jest w pewnym stopniu związane z kodowaniem. Z drugiej strony chodzi bardziej o polecenia powłoki. Jeśli uważasz, że powinno być lepiej przy przepełnieniu stosu, możesz go swobodnie przenieść. Nie byłem pewien, gdzie pytanie pasuje lepiej.)

Raffael Luthiger
źródło
Masz na myśli error_reportingpoziom? Dlaczego nie chcesz używać wartości w php.inilub niestandardowych w samych plikach php.
kwanty
@quanta: Tak, mówię o zgłaszaniu błędów. Przepraszam, to nie było wystarczająco jasne. Teraz zmieniam pytanie. Nie chcę tego zmieniać w php.ini, ponieważ czasami używam tego łańcucha poleceń również na serwerze na żywo. A ustawienie go w samych plikach również nie jest opcją, ponieważ musiałbym ustawić go w każdym pliku, ponieważ polecenie find wykonuje każdy plik osobno. Czasami mam projekty, w których korzystamy z bibliotek zewnętrznych i chciałbym je również przetestować w tym samym czasie.
Raffael Luthiger

Odpowiedzi:

15

Według php -h

-d foo[=bar]     Define INI entry foo with value 'bar'

Jeśli chcesz zalecaną domyślną produkcję ( E_ALL & ~E_DEPRECATED), wartość będzie 22527w PHP 5.3 i 24575PHP 5.4+.

php -l -d error_reporting=22527

Znalezienie wartości dla różnych kombinacji jest proste.

php -r 'echo E_ALL & ~E_NOTICE | E_STRICT;' # should return 32759
php -r 'echo E_ALL & ~E_DEPRECATED;' # should return 22527 in PHP 5.3, 24575 in PHP 5.4+
h0tw1r3
źródło
1
cholera ... Czytałem „php-h” około 10 razy, ale jakoś mój umysł zawsze przeskakiwał nad tą linią… Tak, właśnie tego szukałem. W moim przypadku chcę użyć: E_ALL | E_STRICT, który wynosi 32767.
Raffael Luthiger
Od PHP 5.4 E_STRICTjest częścią E_ALL. I E_ALLma przydatną wartość skrótu -1. Można php -d error_reporting=-1więc włączyć wszystkie raporty.
Martin Prikryl