2009-01-07 18 views
5

Chúng tôi đang di chuyển sang một máy chủ mới chạy Windows 2003 và IIS 6. Khi mã PHP của tôi chạy, nó có cảnh báo trên một dòng cụ thể (mà tôi mong đợi vào lúc này nhưng sẽ sớm sửa). Tuy nhiên, khi nó chạm vào cảnh báo, nó sẽ tạm dừng xử lý và trả về lỗi 500 trong tiêu đề HTTP. Thông thường, tôi mong đợi PHP sẽ xuất cảnh báo, nhưng tiếp tục xử lý tập lệnh.Cảnh báo PHP khiến kịch bản dừng trên IIS chạy FastCGI

Có điều gì đó trong cấu hình cho IIS, FastCGI hoặc PHP sẽ trả lại 500 lỗi khi PHP truy cập cảnh báo không?

Để làm rõ: Tôi không muốn chặn các cảnh báo; Tôi muốn họ hiển thị. Tôi không muốn tập lệnh dừng xử lý cảnh báo.

Trả lời

10

Đã giải quyết được vấn đề. log_errors trong php.ini được đặt thành On, nhưng error_log chưa được đặt. Điều này đã khiến PHP ngừng mọi thứ. Sau khi đặt display_errors thành on, các cảnh báo hiện hiển thị để tôi có thể biết mọi thứ đang ở đâu trong đầu ra.

Chủ đề này hữu ích: http://forums.iis.net/p/1146102/1856222.aspx#1856222

+0

Vì vậy, bạn đặt 'error_log' thành gì? Vui lòng bao gồm điều đó trong câu trả lời của bạn để giúp đỡ người khác. –

+0

Hãy là một thiên tài của bạn! – alexander7567

0

Tôi không biết về IIS hoặc FastCGI, nhưng afaik php không có tùy chọn như vậy. Tuy nhiên bạn có thể đặt error_reporting (trong php.ini của bạn) để

E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR 

để làm cho cảnh báo biến mất.

0

Điều đó phụ thuộc rất nhiều vào mã PHP của bạn, nếu bạn đang làm điều gì đó phức tạp trong mã và lỗi xảy ra, máy chủ web đôi khi ném 500 lỗi. Tôi sẽ đề nghị bạn:

  1. Đặt một @ trên đường dây để ngăn chặn các lỗi, tức là:

    $ x = @ my_function ($ y);

  2. Xem nhật ký máy chủ web của bạn để nhận được thông báo lỗi chính xác mà bạn nhận được, sau đó đăng nó ở đây và có lẽ chúng tôi có thể cung cấp cho bạn giải pháp tốt hơn.

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