สถานะการออกจาก PHP 255: หมายความว่าอย่างไร


33

ฉันเพิ่งรวบรวมไบนารีPHP 5.2.9และฉันพยายามรันสคริปต์ PHP บางรายการด้วย ฉันสามารถเรียกใช้งานสคริปต์บางอย่างโดยไม่มีปัญหา แต่หนึ่งในนั้นหยุดการทำงานของโปรแกรมลงครึ่งหนึ่งโดยไม่มีข้อผิดพลาดหรือคำเตือน รหัสสถานะที่ส่งคืนของกระบวนการคือ 255

ฉันอ่านในคู่มือแล้วว่าสถานะดังกล่าวเป็น 'สงวน' คำถามคือเพื่ออะไร

ฉันเชื่อว่ามันมีบางอย่างเกี่ยวกับการพึ่งพาหายไปในการปฏิบัติการ PHP แต่ฉันไม่แน่ใจ

ใครรู้รหัสออก 255 หมายความว่าอะไร

PS ไม่มีข้อผิดพลาดในสคริปต์ PHP พวกเขาเรียกใช้ตกลงบนเครื่องอื่น ๆ

คำตอบ:


34

255เป็นข้อผิดพลาดฉันสามารถทำซ้ำรหัสทางออกเดียวกันได้โดยมีข้อผิดพลาดร้ายแรง

ซึ่งหมายความว่าการรายงานข้อผิดพลาดของคุณถูกซ่อนไว้อาจมีสาเหตุที่เป็นไปได้สำหรับสิ่งนี้

  • error_reporting ไม่ได้ถูกกำหนดและ php รายงานว่าไม่มีข้อผิดพลาดเลย
  • @(ข้อผิดพลาดในการปราบปรามผู้ดำเนินการ) ซ่อนเอาท์พุทของข้อผิดพลาด
  • STDERR ถูกเปลี่ยนเส้นทางที่อื่น (php -f somefile.php 2> / dev / null ลบการเปลี่ยนเส้นทาง)
  • นี่อาจเป็นข้อผิดพลาดภายในเนื่องจากการพึ่งพาที่ขาดหายไปและข้อผิดพลาดร้ายแรงมีรหัสการออกเช่นเดียวกับความผิดพลาดของโปรแกรม

1
ในบางกรณีที่พบได้ยากใน Windows สิ่งนี้เกี่ยวข้องกับphp.iniไฟล์ที่ใช้งานไม่ได้ (เช่นไฟล์นั้นมีตัวอักษรเสียอยู่ภายใน) เอาฉันไป 2 ชั่วโมงเพื่อหาสิ่งนี้ เคล็ดลับ: หากสคริปต์ของคุณcomposer.pharทำงานร่วมกับไฟล์php -n composer.pharของคุณphp.iniอาจเสียหาย
tftd

9

นอกจากนี้ยังอาจหมายความว่า/etc/php5/cli/php.ini(บน Debian / Ubuntu) หรือ/etc/php.ini(บน RHEL / CentOS / ฯลฯ ) มีความdisplay_errors = Offหมายว่าข้อผิดพลาดหรือคำเตือนจากสคริปต์บรรทัดคำสั่งจะไปที่ใดเว้นแต่log_errors = On(ดูการerror_logตั้งค่า)

ลองเรียกใช้สคริปต์ของคุณด้วยสคริปต์ตัวตัดคำที่ใช้ php -d display_errors=on ...


3
ฉันแค่อยากจะบอกว่าขอบคุณสำหรับ-d display_errors=onเคล็ดลับ - ฉันพยายามดีบักสคริปต์ที่กำหนดเองสำหรับแอป PHP ของใครบางคนที่พยายามจัดการข้อยกเว้นทั้งหมดด้วยตัวเอง แต่มักจะกินข้อยกเว้น การใช้การตั้งค่าสถานะนั้นฉันสามารถรับข้อยกเว้นเพื่อพิมพ์ไปยัง CLI!
geerlingguy

ในกรณีของฉันสิ่งนี้แสดงให้ฉันเห็นว่าสคริปต์ php เกินเวลาดำเนินการสูงสุด ขอบคุณสำหรับเคล็ดลับที่ยอดเยี่ยม!
Max Vernon

0

อาจเกิดจาก PHP ระงับข้อความแสดงข้อผิดพลาด (บรรทัดขึ้นต้นด้วย @) ฉันพบสายโดย

grep -r "@" src/ 

แล้วแสดงความคิดเห็นออก @ หลังจากนี้ฉันได้รับข้อผิดพลาดจริงและสามารถแก้ไขได้อย่างง่ายดาย ฉันยังสังเกตเห็นหลังจากนั้น PHPS รูปแบบพบข้อผิดพลาดเดียวกันแล้ว แต่ฉันไม่ได้แก้ไข / สังเกตมัน


0

มันอาจหมายความว่า

  • /etc/php5/cli/php.ini (บน Debian / Ubuntu)

  • /etc/php.ini (บน RHEL / CentOS / ฯลฯ )

ได้ตั้งค่า

display_errors = Off 

ซึ่งหมายความว่าข้อผิดพลาดหรือคำเตือนใด ๆ จากสคริปต์บรรทัดคำสั่งจะไม่มีที่ไหนเลยเว้นแต่

log_errors = On 

ดูเพิ่มเติมการตั้งค่า error_log

ลองเรียกใช้สคริปต์ของคุณด้วย wrapper


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.