Làm cách nào để hiển thị và ghi nhật ký lỗi PHP trên IIS7?


29

Chúng tôi đang chạy PHP 5.2.5 trên Máy chủ IIS 7 và chúng tôi gặp sự cố khiến lỗi PHP hiển thị ... Hiện tại bất cứ khi nào chúng tôi gặp lỗi PHP, máy chủ sẽ gửi lại lỗi 500 với thông báo "Trang không thể là trang hiển thị vì đã xảy ra lỗi máy chủ nội bộ. "

Đây có thể là một cài đặt tốt cho các trang web sản xuất nhưng nó khá khó chịu trên máy chủ phát triển ... ;-)

Tôi đã thử cấu hình php.iniđể hiển thị lỗi trên màn hình cũng như đăng nhập chúng vào một thư mục cụ thể nhưng có vẻ như Máy chủ đã bắt được tất cả các lỗi trước đó và ngăn chặn và xử lý bằng PHP ...

Có ai biết chúng ta phải làm gì để IIS hiển thị lỗi PHP trên màn hình không? Bất kỳ liên kết, mẹo hay hướng dẫn về chủ đề này sẽ được đánh giá cao!


Thứ nhất, đảm bảo rằng bạn có những: log_errors=1, error_reporting=-1, log_errors_max_len=0.
Pacerier

ini_set("display_errors", "on");thêm các dòng này trong tập tin php.
ELITE

Câu trả lời:


35

Chỉ cần kiểm tra lại, bạn có đăng nhập được đặt error_reporting = E_ALLdisplay_errors = Ontrong của bạn php.inikhông? Thông thường điều này là đủ để hiển thị các lỗi này trong IIS 7.

Tiếp theo, hãy xem các cài đặt IIS của bạn, vì nó có thể được đặt thành chỉ hiển thị các thông báo lỗi cục bộ. Trong trình soạn thảo cấu hình IIS 7, phần này nằm trong system.webServer-> httpErrors. Bạn sẽ cần thay đổi errorMode thành Chi tiết từ Chi tiếtLocalOnly. Rõ ràng điều này bây giờ có nghĩa là bất cứ ai duyệt trang web của bạn sẽ có thể thấy lỗi.

nhập mô tả hình ảnh ở đây

nhập mô tả hình ảnh ở đây

Ngoài ra, nếu bạn muốn giữ chúng cục bộ, bạn có thể sử dụng Remote Desktop để đăng nhập vào máy chủ và chạy ứng dụng từ đó, nếu có thể.


1
Có, tôi đã kiểm tra và tất cả đều được cấu hình đúng.
Ben

Đã thêm một số thông tin khắc phục sự cố
Sam Cogan

1
Việc thay đổi errorMode thành "Chi tiết" từ "Chi tiếtLocalOnly" đã thực hiện thủ thuật này. Cảm ơn!
Ben

1
Tôi cũng phải xóa bộ sưu tập lỗi HTTP trong system.webServer. Tôi đã không làm việc với PHP cho đến khi tôi làm.

1
Vui lòng làm nổi bật điều đó system.webServerbằng máu của tôi và thêm ghi chú: "Có, có kết hợp".
DiGi

2

Chỉ muốn thêm, "hiện tạiResponse" nên được đặt thành "PassThrough". Tôi đã không nhận được bất kỳ thông báo lỗi thực sự mà không có cài đặt bổ sung.


1
Trường hợp này nằm ở đâu?
Eugene Mala

0

Bạn có thể thực hiện việc này một cách dễ dàng bằng GUI của Trình quản lý IIS. Chọn trang web của bạn và bấm đúp vào trang lỗi. Sau đó nhấn 'Chỉnh sửa cài đặt tính năng ...' và chọn tùy chọn 'lỗi chi tiết' thay vì 'lỗi chi tiết mặc định cho các yêu cầu cục bộ và trang lỗi tùy chỉnh cho các yêu cầu từ xa'. Voilà, đơn giản như thế!


Nhật ký và lỗi có thể được hiển thị ở đâu?
JukEboX

0

Tôi đã phải đi vào các cài đặt trên máy chủ web vào cấu hình php và có một cài đặt trong đó để báo cáo lỗi và được đặt thành sản xuất theo mặc định. Phải thay đổi nó để phát triển ngay cả sau khi thay đổi php.ini và đề xuất ở đây. Tôi đang sử dụng iis 7.5 trên 2008 R2.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.