Mengatur nilai error_reporting php dengan parameter konsol

11

Untuk menguji proyek PHP saya tentang kesalahan, saya biasanya menggunakan perintah ini:

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

Saya ingin memperluas bagian php -l '{}' \;dengan beberapa parameter sehingga akan menggunakan tingkat error_reporting kustom dan bukan yang didefinisikan dalam php.ini. Apakah ini mungkin?

(Saya tahu bahwa pertanyaannya agak terkait pengkodean. Di sisi lain itu lebih tentang perintah shell. Jika Anda pikir itu harus lebih baik di stackoverflow maka jangan ragu untuk memindahkannya. Saya tidak yakin di mana pertanyaannya lebih cocok.)

Raffael Luthiger
sumber
Apakah maksud Anda error_reportinglevel? Mengapa Anda tidak ingin menggunakan nilai dalam php.iniatau kustom dalam file php sendiri.
quanta
@quanta: Ya, saya berbicara tentang error_reporting. Maaf, itu tidak cukup jelas. Saya mengubah pertanyaan sekarang. Saya tidak ingin mengubahnya di php.ini karena saya kadang-kadang menggunakan rantai perintah ini di server langsung. Dan mengaturnya di dalam file itu sendiri bukanlah pilihan juga karena saya harus mengaturnya di setiap file karena perintah find mengeksekusi setiap file secara individual. Dan kadang-kadang saya memiliki proyek di mana kami menggunakan perpustakaan eksternal dan saya ingin mengujinya pada saat yang sama.
Raffael Luthiger

Jawaban:

15

Berdasarkan php -h

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

Jika Anda menginginkan default produksi yang disarankan ( E_ALL & ~E_DEPRECATED), nilainya akan 22527dalam PHP 5.3, dan 24575dalam PHP 5.4+.

php -l -d error_reporting=22527

Menemukan nilai untuk berbagai kombinasi itu mudah.

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
sumber
1
Sial ... Saya membaca "php-h" sekitar 10 kali tetapi entah bagaimana pikiran saya selalu melompati baris ini .... Ya, ini yang saya cari. Dalam kasus saya, saya ingin menggunakan: E_ALL | E_STRICT yaitu 32767.
Raffael Luthiger
Sejak PHP 5.4, E_STRICTadalah bagian dari E_ALL. Dan E_ALLmemiliki nilai shortcut yang berguna -1. Jadi bisa dilakukan php -d error_reporting=-1untuk mengaktifkan semua pelaporan.
Martin Prikryl