ฉันจะแสดงและบันทึกข้อผิดพลาด PHP บน IIS7 ได้อย่างไร


29

เรากำลังเรียกใช้ PHP 5.2.5 บนเซิร์ฟเวอร์ IIS 7 และเรากำลังมีปัญหาในการมองเห็นข้อผิดพลาดของ PHP ... ในขณะนี้เมื่อใดก็ตามที่เรามีข้อผิดพลาด PHP เซิร์ฟเวอร์จะส่งข้อผิดพลาด 500 ครั้งพร้อมข้อความ "หน้าไม่สามารถ แสดงขึ้นเนื่องจากข้อผิดพลาดเซิร์ฟเวอร์ภายในเกิดขึ้น "

นี่อาจเป็นการตั้งค่าที่ดีสำหรับเว็บไซต์ที่ใช้งานจริง แต่มันค่อนข้างน่ารำคาญในเซิร์ฟเวอร์การพัฒนา ... ;-)

ฉันได้ลองกำหนดค่าphp.iniเพื่อแสดงข้อผิดพลาดบนหน้าจอรวมทั้งบันทึกลงในโฟลเดอร์เฉพาะ แต่ดูเหมือนว่าเซิร์ฟเวอร์จะตรวจจับข้อผิดพลาดทั้งหมดก่อนและป้องกันและจัดการโดย PHP ...

มีคนรู้ว่าสิ่งที่เราต้องทำเพื่อให้ IIS แสดงข้อผิดพลาด PHP บนหน้าจอ? ลิงค์ใด ๆ เคล็ดลับหรือแบบฝึกหัดในเรื่องจะได้รับการชื่นชม!


log_errors=1ขั้นแรกให้แน่ใจว่าคุณมีเหล่านี้: error_reporting=-1, log_errors_max_len=0,
Pacerier

ini_set("display_errors", "on");เพิ่มบรรทัดเหล่านี้ในไฟล์ php
ELITE

คำตอบ:


35

เพียงแค่ตรวจสอบอีกครั้งคุณมีการตั้งค่าการบันทึกerror_reporting = E_ALLและdisplay_errors = Onในของคุณphp.iniหรือไม่ โดยปกติแล้วจะเพียงพอที่จะแสดงข้อผิดพลาดเหล่านี้ใน IIS 7

ถัดไปดูการตั้งค่า IIS ของคุณเนื่องจากอาจถูกตั้งค่าให้แสดงเฉพาะข้อความแสดงข้อผิดพลาดในเครื่องเท่านั้น ในตัวแก้ไขการกำหนดค่า IIS 7 สิ่งนี้อยู่ภายใต้ system.webServer-> httpErrors คุณจะต้องเปลี่ยน errorMode เป็นรายละเอียดจาก DetailedLocalOnly แน่นอนตอนนี้หมายความว่าทุกคนที่เข้าชมไซต์ของคุณจะสามารถเห็นข้อผิดพลาดได้

ป้อนคำอธิบายรูปภาพที่นี่

ป้อนคำอธิบายรูปภาพที่นี่

อีกวิธีหนึ่งถ้าคุณต้องการเก็บไว้ในเครื่องคุณสามารถใช้ Remote Desktop เพื่อเข้าสู่เซิร์ฟเวอร์และเรียกใช้แอปจากที่นั่นหากทำได้


1
ใช่ฉันตรวจสอบแล้วและกำหนดค่าทั้งหมดเรียบร้อยแล้ว
Ben

เพิ่มข้อมูลการแก้ปัญหาเพิ่มเติมบางอย่าง
Sam Cogan

1
การเปลี่ยน errorMode เป็น "Detailed" จาก "DetailedLocalOnly" ได้ทำการเปลี่ยน ขอบคุณ!
Ben

1
ฉันต้องลบการรวบรวมข้อผิดพลาด HTTP ภายใต้ system.webServer ด้วย ไม่ทำงานกับ PHP จนกว่าฉันจะทำ

1
กรุณาเน้นsystem.webServerด้วยเลือดของฉันและเพิ่มหมายเหตุ: "ใช่มีคำสั่งผสม"
DiGi

2

แค่ต้องการเพิ่มว่า "existingResponse" ควรถูกตั้งค่าเป็น "PassThrough" ฉันไม่ได้รับข้อความแสดงข้อผิดพลาดจริง ๆ หากไม่มีการตั้งค่าเพิ่มเติมนั้น


1
ตั้งอยู่ที่ไหนการตั้งค่านี้?
Eugene Mala

0

คุณสามารถทำได้อย่างง่ายดายโดยใช้ IIS Manager GUI เลือกไซต์ของคุณและดับเบิลคลิกหน้าข้อผิดพลาด จากนั้นกด 'แก้ไขการตั้งค่าคุณสมบัติ ... ' แล้วเลือกตัวเลือก 'ข้อผิดพลาดโดยละเอียด' แทนข้อผิดพลาดรายละเอียด 'สำหรับคำขอภายในเครื่องและหน้าข้อผิดพลาดที่กำหนดเองสำหรับคำขอระยะไกล' ใช่, ง่ายมาก!


บันทึกและข้อผิดพลาดจะปรากฏที่ไหน?
JukEboX

0

ฉันต้องไปที่การตั้งค่าบนเว็บเซิร์ฟเวอร์ในการกำหนดค่า php และมีการตั้งค่าสำหรับการรายงานข้อผิดพลาดและถูกตั้งค่าเป็นค่าเริ่มต้น ต้องเปลี่ยนเป็นการพัฒนาแม้หลังจากเปลี่ยน php.ini และคำแนะนำที่นี่ ฉันใช้ iis 7.5 กับ 2008 R2

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