2012-01-20 4 views
8

Khi tôi đang phát triển API REST của tôi trong PHP Tôi đang làm việc với application/json đầu ra, vì vậy khi tôi nhận được lỗi trong khi thử nghiệm trong trình duyệt họ trông như thế này:Làm cách nào tôi có thể yêu cầu PHP loại bỏ các ngoại lệ dưới dạng văn bản thô thay vì HTML?

<b>Fatal error</b>: Uncaught exception 'Exception' with message 'PDO caught an error: 
array(3) { 
    [0]=&gt; 
    string(5) &quot;42000&quot; 
    [1]=&gt; 
    int(1065) 
    [2]=&gt; 
    string(15) &quot;Query was empty&quot; 
} 

Và nó trở nên tệ hơn khi tôi nhận được lớn ngăn xếp dấu vết và các công cụ. Vì vậy, có một lá cờ tôi có thể thiết lập nói với PHP rằng tôi muốn lỗi của tôi unescaped và trong văn bản thô?

Trả lời

9

Đây là cài đặt php.ini được gọi là html_errors.

0

Có thể có một số tùy chọn cấu hình mà tôi không thể tìm thấy để làm điều này - tôi nghi ngờ có, vì HTML không có mặt trên dòng lệnh.

Công việc bẩn xung quanh là chuyển các chuỗi qua html_entity_decode(strip_tags($str)).

EDIT Như Andy Pieters đã chỉ ra (rõ ràng là đọc tài liệu tốt hơn tôi) có tùy chọn cấu hình được gọi là html_errors để kiểm soát điều này. Tôi sẽ để lại câu trả lời ở đây trong trường hợp vì một số lý do bạn không thể sửa đổi điều này, nhưng bạn có lẽ nên chấp nhận câu trả lời của mình.

7

Trong php.ini, bạn có thể đặt ba cài đặt khác nhau để thay đổi cách hiển thị lỗi HTML.

tôi sử dụng sau đây trong môi trường phát triển của tôi:

html_errors = On 
error_prepend_string = "<pre>" 
error_append_string = "</pre>" 
+0

Cũng đừng quên đặt đủ ['log_errors_max_len' ] (http://php.net/manual/en/errorfunc.configuration.php#ini.log-errors-max-len). – Pacerier