2011-12-19 42 views
6

Thỉnh thoảng tôi sẽ có một số mã PHP được tạo thành không đúng và tôi sẽ gặp lỗi 500. Tôi đang chạy Apache 2.2 trên máy tính xách tay Windows 7. Là một IDE, tôi đã bắt đầu sử dụng PhpStorm.PHP 5.3 - Khắc phục sự cố 500 lỗi - Gỡ lỗi - Lỗi phân tích cú pháp

Cách tốt nhất để nắm bắt các lỗi này và được thông báo về số dòng là gì? Tại sao lỗi cú pháp liên quan đến OOP có xu hướng ném 500 lỗi và các vấn đề về chức năng có xu hướng trả về các lỗi bình thường?

Ví dụ về lỗi cú pháp: gọi phương thức tĩnh từ một lớp có một dấu hai chấm thay vì hai dấu hai chấm.

CẬP NHẬT: Vui lòng xem câu trả lời được chấp nhận và tất cả nhận xét.

+0

Tôi không chắc chắn những gì bạn có nghĩa là do "lỗi bình thường"? Nếu mã không phân tích cú pháp do lỗi cú pháp thì tôi sẽ mong đợi 500 từ máy chủ web với chi tiết lỗi biên dịch trong nhật ký (không phải trong màn hình cho người dùng). – David

Trả lời

12

PHP sẽ phản hồi bằng "500" khi gặp lỗi Fatal, chẳng hạn như E_PARSE, E_ERROR và các ngoại lệ chưa được nắm bắt. 500 là mã phản hồi HTTP cho "Lỗi Máy chủ Nội bộ" - một cái gì đó không thể khôi phục đã xảy ra trong khi xử lý yêu cầu.

Trong php.ini của bạn, trên một máy phát triển, bạn nên thiết lập mức error_reporting của bạn để (ít nhất) E_NOTICE - tốt E_ALL - và chắc chắn rằng display_errors là trên. Thao tác này sẽ hiển thị cho bạn thông báo lỗi trong trình duyệt, bao gồm cả lỗi "500".

Bạn cũng có thể kiểm tra nhật ký lỗi Apache của mình, lỗi sẽ được liệt kê ở đó, miễn là log_errors được bật trong php.ini. Theo mặc định, điều này sẽ là <apache_ServerRoot>\logs\error.log.

Bạn cũng có thể kiểm soát tất cả điều này vào thời gian chạy với ini_set()error_reporting()

+0

Tình huống tĩnh đó phải là lỗi E_PARSE. Thật khó để tìm ra vấn đề - tôi đã nghĩ rằng phải có một cách tốt hơn. – BuddyJoe

+0

Đã bật error_reporting. +1 Và múi giờ được đặt. – BuddyJoe

+0

@brunot nếu bạn không thấy thông báo có 'error_reporting', có thể' display_errors' bị tắt. Có những tình huống trong đó thông báo lỗi sẽ không được xuất ra, nhưng điều này chỉ thực sự xảy ra nếu có điều gì đó rất sai với PHP trong nội bộ và nó bị lỗi. Khi điều này xảy ra, thường có một thông báo trong nhật ký Apache cho bạn biết rằng * nó đã xảy ra, mặc dù gỡ lỗi * tại sao * nó xảy ra có thể rất khó thực sự. Trong tình huống này, chạy tập lệnh từ dòng lệnh * đôi khi * giúp nhận được thông báo lỗi hữu ích, nhưng không phải lúc nào cũng vậy. – DaveRandom

Các vấn đề liên quan