การตั้งค่า php error_reporting ด้วยพารามิเตอร์คอนโซล


11

เพื่อทดสอบโครงการ PHP ของฉันเกี่ยวกับข้อผิดพลาดปกติฉันจะใช้คำสั่งนี้:

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

ฉันต้องการที่จะขยายส่วนที่php -l '{}' \;มีพารามิเตอร์บางอย่างดังนั้นมันจะใช้ระดับ error_reporting ที่กำหนดเองและไม่ได้กำหนดไว้ใน php.ini เป็นไปได้ไหม

(ฉันรู้ว่าคำถามนั้นเกี่ยวข้องกับการเขียนโค้ดค่อนข้างมากในอีกด้านหนึ่งมันเกี่ยวกับคำสั่งเชลล์มากขึ้นถ้าคุณคิดว่ามันควรจะดีกว่าใน stackoverflow แล้วรู้สึกอิสระที่จะเคลื่อนย้ายได้


คุณหมายถึงerror_reportingระดับหรือไม่ ทำไมคุณไม่ต้องการใช้ค่าในphp.iniหรือกำหนดเองในไฟล์ php เอง
quanta

@quanta: ใช่ฉันกำลังพูดถึง error_reporting ขออภัยมันไม่ชัดเจนพอ ฉันเปลี่ยนคำถามตอนนี้ ฉันไม่ต้องการเปลี่ยนเป็น php.ini เพราะบางครั้งฉันใช้เชนคำสั่งนี้บนเซิร์ฟเวอร์ที่ใช้งานจริงเช่นกัน และการตั้งค่าไว้ในไฟล์นั้นก็ไม่ใช่ตัวเลือกอย่างใดอย่างหนึ่งเพราะฉันจะต้องตั้งค่าในทุกไฟล์เพราะคำสั่ง find จะเรียกใช้งานทุกไฟล์ และบางครั้งฉันก็มีโครงการที่เราใช้ห้องสมุดภายนอกและฉันต้องการทดสอบพวกเขาในเวลาเดียวกันด้วย
Raffael Luthiger

คำตอบ:


15

ตามที่ php -h

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

หากคุณต้องการเริ่มต้นการผลิตที่แนะนำ ( E_ALL & ~E_DEPRECATED) ค่าจะเป็น22527PHP 5.3 และ24575ใน PHP 5.4+

php -l -d error_reporting=22527

การหาค่าของชุดค่าผสมต่างๆนั้นเป็นเรื่องง่าย

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+

1
ห่าม ... ฉันกำลังอ่าน "php -h" ประมาณ 10 ครั้ง แต่อย่างใดใจของฉันก็มักจะกระโดดข้ามบรรทัดนี้ .... ใช่นี่คือสิ่งที่ฉันกำลังค้นหา ในกรณีของฉันฉันต้องการใช้: E_ALL | E_STRICT คือ 32767.
Raffael Luthiger

ตั้งแต่ PHP 5.4 เป็นส่วนหนึ่งของE_STRICT E_ALLและE_ALLมีค่าทางลัดที่สะดวก-1สบาย ดังนั้นหนึ่งสามารถทำได้php -d error_reporting=-1เพื่อเปิดใช้งานการรายงานทั้งหมด
Martin Prikryl
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.