เปิดใช้งานการแสดงข้อผิดพลาดใน PHP ผ่าน htaccess เท่านั้น


113

ฉันกำลังทดสอบเว็บไซต์ออนไลน์

ขณะนี้ข้อผิดพลาดไม่ปรากฏขึ้น (แต่ฉันรู้ว่ามีอยู่)

ฉันสามารถเข้าถึงได้เฉพาะ.htaccessไฟล์

ฉันจะสร้างข้อผิดพลาดทั้งหมดเพื่อแสดงโดยใช้.htaccessไฟล์ของฉันได้อย่างไร


ฉันเพิ่มบรรทัดเหล่านี้ลงใน.htaccessไฟล์ของฉัน:

php_flag display_startup_errors on
php_flag display_errors on
php_flag html_errors on

และตอนนี้หน้าจะแสดง:

ข้อผิดพลาดภายในเซิร์ฟเวอร์


ฉันได้ทำ googling เพิ่มแฟล็กบางอย่างใน htaccess ของฉัน และหน้าของฉันไม่สามารถแสดงได้อีก
Ogugua Belonwu

3
ดูเหมือนว่าคุณไม่มีสิทธิ์ลบล้างการตั้งค่าเหล่านี้จาก htaccess คุณอาจต้องตั้งค่าAllowOverride Allในการกำหนดค่าApache หากคุณสามารถเข้าถึงได้
kapa

ตรวจสอบบันทึกข้อผิดพลาด apache ของคุณ จะต้องมีเหตุผลที่แน่นอนว่าทำไมคุณถึงได้รับข้อผิดพลาดภายใน 500 สิ่งที่คุณเห็นในเบราว์เซอร์เป็นเพราะการออกแบบที่ไร้ประโยชน์สำหรับวัตถุประสงค์ในการวินิจฉัย
Marc B

คำตอบ:


190

.htaccess:

php_flag display_startup_errors on
php_flag display_errors on
php_flag html_errors on
php_flag  log_errors on
php_value error_log  /home/path/public_html/domain/PHP_errors.log

14
ฉันเพิ่มบรรทัดเหล่านี้ใน htaccess ของฉัน: php_flag display_startup_errors บน php_flag display_errors บน php_flag html_errors บนและหน้าเว็บแสดงข้อผิดพลาดภายในเซิร์ฟเวอร์
Ogugua Belonwu

4
เมื่อใช้ PHP เป็นโมดูล Apache คุณยังสามารถเปลี่ยนการตั้งค่าการกำหนดค่าโดยใช้คำสั่งในไฟล์การกำหนดค่า Apache (เช่น httpd.conf) และไฟล์. htaccess คุณจะต้องมีสิทธิ์ "AllowOverride Options" หรือ "AllowOverride All" จึงจะทำได้ php.net/manual/en/configuration.changes.php
ไซเล็กซ์

สร้าง PHP_errors.log และทำให้เป็น 777 วิธีอื่นที่คุณอาจจะไม่เห็นไฟล์ที่สร้างโดย apache และเติม ... อย่างน้อยฉันก็ต้องสร้างมัน
PJunior

2
เช่น ogugua ตอนนี้ฉันมีข้อผิดพลาดภายในเซิร์ฟเวอร์โดยใช้บรรทัดเหล่านี้
ลงจอด

1
หากคุณได้รับ 500 อาจเป็นเพราะคุณใช้ php-fpm ไม่ใช่ mod_php
mpchadwick

41
php_flag display_errors on

เพื่อเปิดการแสดงข้อผิดพลาดจริง

ในการกำหนดประเภทข้อผิดพลาดที่คุณกำลังแสดงคุณจะต้องใช้:

php_value error_reporting <integer>

รวมกับค่าจำนวนเต็มจากหน้านี้: http://php.net/manual/en/errorfunc.constants.php

โปรดทราบว่าหากคุณใช้ -1 เป็นจำนวนเต็มจะแสดงข้อผิดพลาดทั้งหมดและเป็นหลักฐานในอนาคตเมื่อมีการเพิ่มข้อผิดพลาดประเภทใหม่


17

ฉันต้องการเพิ่มรายละเอียดให้กับคำตอบที่มีอยู่:

# PHP error handling for development servers
php_flag display_startup_errors on
php_flag display_errors on
php_flag html_errors on
php_flag log_errors on
php_flag ignore_repeated_errors off
php_flag ignore_repeated_source off
php_flag report_memleaks on
php_flag track_errors on
php_value docref_root 0
php_value docref_ext 0
php_value error_log /full/path/to/file/php_errors.log
php_value error_reporting -1
php_value log_errors_max_len 0

ให้สิทธิ์ 777 หรือ 755 กับไฟล์บันทึกจากนั้นเพิ่มรหัส

<Files php_errors.log>
     Order allow,deny
     Deny from all
     Satisfy All
</Files>

ในตอนท้ายของ. htaccess สิ่งนี้จะปกป้องไฟล์บันทึกของคุณ

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

สำหรับข้อมูลเพิ่มเติมโปรดไปที่ลิงค์นี้: Advanced PHP Error Handling ผ่าน htaccess


1
วิธีการให้ chmod "0644" กับไฟล์บันทึกข้อผิดพลาด มันจะยังทำงานอยู่ไหม
Andre Chenier

2

หากคุณต้องการดูเฉพาะข้อผิดพลาดรันไทม์ที่ร้ายแรง:

php_value display_errors on
php_value error_reporting 4

2

สิ่งนี้ใช้ได้กับฉัน ( อ้างอิง ):

# PHP error handling for production servers
# Disable display of startup errors
php_flag display_startup_errors off

# Disable display of all other errors
php_flag display_errors off

# Disable HTML markup of errors
php_flag html_errors off

# Enable logging of errors
php_flag log_errors on

# Disable ignoring of repeat errors
php_flag ignore_repeated_errors off

# Disable ignoring of unique source errors
php_flag ignore_repeated_source off

# Enable logging of PHP memory leaks
php_flag report_memleaks on

# Preserve most recent error via php_errormsg
php_flag track_errors on

# Disable formatting of error reference links
php_value docref_root 0

# Disable formatting of error reference links
php_value docref_ext 0

# Specify path to PHP error log
php_value error_log /home/path/public_html/domain/PHP_errors.log

# Specify recording of all PHP errors
# [see footnote 3] # php_value error_reporting 999999999
php_value error_reporting -1

# Disable max error string length
php_value log_errors_max_len 0

# Protect error log by preventing public access
<Files PHP_errors.log>
 Order allow,deny
 Deny from all
 Satisfy All
</Files>
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.