2009-11-17 33 views
5

Tôi đã cài đặt một ứng dụng PHP lên một máy chủ web chia sẻ lưu trữ. Tôi đang nhận được 500 Internal Server Error. Tôi dường như không có quyền truy cập vào bất kỳ tệp nhật ký nào vì vậy tôi muốn trang lỗi tạm thời cung cấp chi tiết về lỗi.Làm cách nào để hiển thị chi tiết về lỗi máy chủ nội bộ PHP?

Tôi biết cách thực hiện điều này trong ASP.Net nhưng tôi không quen với PHP.

Trả lời

16

thử:

error_reporting(E_ALL); 
ini_set('display_errors', '1'); 

ở phía trên cùng của tập tin.

+3

Đồng thời kiểm tra quyền của tệp. Thông thường, nếu một tập tin không thực thi nó sẽ ném một lỗi 500. –

-1

Một "Lỗi máy chủ nội bộ" không phải là lỗi PHP (như tên gọi). Do đó, bạn phải xem nhật ký máy chủ của mình (mà bạn không có quyền truy cập vào, dường như) hoặc bạn không thể làm bất cứ điều gì về nó từ PHP.

+2

-1, tùy thuộc vào cấu hình máy chủ và phần mềm lỗi PHP có thể được trình bày dưới dạng 500 giây. – Dereleased

+0

Chính xác, trên thực tế vì lý do bảo mật, rất nhiều máy chủ chia sẻ biến một lỗi php thành 500 thành một phần của sự đàn áp. –

+0

Xin lỗi về điều đó. – Franz

2

Tôi nghi ngờ bạn nhận được lỗi đó từ PHP. Trên lưu trữ được chia sẻ, có nhiều khả năng cấu hình htaccess mặc định của ứng dụng đang gây ra lỗi.

Đoán của tôi sẽ là mod_rewrite không có RewriteBase được đặt.

+0

Điều này là hoàn toàn có thể, và '.htaccess' thường là thủ phạm đầu tiên của tôi khi gỡ lỗi, nhưng anh ta không bao giờ nói rằng anh ta đang sử dụng Apache. – Dereleased

+0

@Deleleased - PHP + SharedHosting, tôi vừa làm toán. Tôi sẽ ngạc nhiên nếu đó là IIS. –

1

nhìn vào các giá trị trong phpinfo(); để xem nếu bất cứ điều gì nhô ra ... đặt nó ở đâu đó trong các mã và nó sẽ hiển thị một loạt các thông tin phiên bản php

4

Nếu giải pháp Jeremy Morgan không hoạt động, hãy thử tạo tệp nhật ký của riêng bạn bằng cách sử dụng set_error_handler(). Thông thường một số thông tin về trạng thái của ứng dụng ($ GLOBALS và vv) có thể là đủ thông tin, nhưng PHP sẽ (ít nhất là cố gắng) truyền cho bạn tất cả các loại thông tin về nơi xảy ra lỗi và loại lỗi nào.

Ngoài ra, hãy thử sử dụng phương pháp gỡ lỗi "Phân chia và chinh phục". Bắt đầu với khoảng một nửa tệp của bạn, và sau đó mở rộng lên nếu nó vẫn bị treo hoặc xuống nếu nó chạy umtil điểm đó. Nếu bạn không muốn xóa mã của mình, mã /* comment out */ bị cắt hoặc sử dụng chỉ thị đặc biệt __halt_compiler() để PHP bỏ qua tất cả dữ liệu còn lại trong tệp.

Cuối cùng, một điều khiến tôi phát điên khi cố sửa nó là những gì được gọi là Byte Order Mark. PHP đã đánh giá BOM ở đầu tệp, làm cho nó gửi đầu ra và gây ra sự cố trong khi cố gắng gửi tiêu đề và tương tự. Có lẽ không phải vấn đề của bạn là gì, nhưng tri thức đáng có.

+1

+1 để đề cập đến HĐQT. – chelmertz

+1

+1 khác cho BOM. Điều đó đã cho tôi phù hợp với cách trở lại khi tôi lần đầu tiên bắt đầu! –

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