2014-09-23 25 views
5

Tôi đang cố định cấu hình đăng nhập email trong Symfony. Tôi đã theo dõi the cookbook và nó hoạt động nhưng tôi gặp sự cố với lỗi nghiêm trọng.Đăng nhập Lỗi nghiêm trọng trong symfony

Các lỗi đó không được đăng nhập ở chế độ prod. Tôi đã tìm ra rằng khi tôi thêm Debug::enable(); vào app.php, lỗi sẽ được ghi lại, tuy nhiên tôi vẫn không nhận được email.

Dưới đây là cấu hình có liên quan:

mail: 
     type:   fingers_crossed 
     action_level: critical 
     handler:  buffer 
    buffer: 
     type: buffer 
     handler: swift 
    swift: 
     type:  swift_mailer 
     from_email: %error_mail_from% 
     to_email: %error_mail_to% 
     subject: %error_mail_subject% 
     level:  debug 
+0

Bạn có thể thay đổi quan trọng thành lỗi vì bạn sẽ cung cấp cho bạn tin nhắn 400x cũng như tin nhắn 500x. Nhưng @Yann Eugone là chính xác, một lỗi nghiêm trọng sẽ tắt mọi thứ và nó thực sự không thực tế để bắt chúng. Tất nhiên nếu bạn đang nhận được lỗi nghiêm trọng trong sản xuất thì nó ngụ ý rằng phương pháp thử nghiệm của bạn cần làm việc. – Cerad

+1

@Cerad 4xx không phải là vấn đề. Chúng xảy ra ngay cả khi ai đó truy cập trang bằng iPad (công cụ không được tối ưu hóa cho điều đó) và nó yêu cầu biểu tượng cảm ứng táo của nó vì vậy tôi không quan tâm đến chúng. Tôi cũng biết rằng một lỗi nghiêm trọng sẽ không bao giờ xảy ra trong sản xuất nhưng nếu nó ... Tôi muốn biết! – Nemo64

Trả lời

2

Đây không phải là một điều dễ dàng để đăng nhập PHP Lỗi Nặng, bởi vì bất cứ khi nào lỗi được ném, PHP shutdown ... Tuy nhiên, có một chức năng mà có thể được sử dụng để làm một điều nhỏ ngay trước khi quá trình tắt: register_shutdown_function

có một cái nhìn để How do I catch a PHP Fatal Error

này là làm thế nào Symfony của Debug::enable(); đang làm các trick. Hãy xem https://github.com/symfony/Debug/blob/master/ErrorHandler.php#L118

1

Bạn đang sử dụng phiên bản Symfony nào?

Có vẻ như từ 2.3 có một cải tiến tốt đẹp cho phép bạn thực hiện điều đó (ghi nhật ký lỗi nghiêm trọng). Có một cái nhìn lúc này: https://github.com/symfony/symfony/pull/6474

+0

Tôi có nhiều phiên bản symfony. Lâu đời nhất là 2.1. Tôi sẽ xem nếu nó hoạt động trong phiên bản mới hơn. – Nemo64

0

tôi đã cùng một vấn đề (erros chết người đăng nhập trong sản xuất nhưng email không được gửi) và tôi quản lý để làm cho nó làm việc thêm vào config_prod.php tôi:

services: 
    mydebug.debug_handlers_listener: 
       class: Symfony\Component\HttpKernel\EventListener\DebugHandlersListener 
       arguments: 
        - { 0:"@http_kernel", 1:'terminateWithException'} 
       tags: 
        - { name: kernel.event_subscriber } 

tôi thấy rằng một dịch vụ như vậy được định nghĩa trong \vendor\symfony\symfony\src\Symfony\Bundle\FrameworkBundle\Resources\config\debug.xml nhưng không phải trong debug_prod.xml.

Với gọi lại tới terminateWithException nó hoạt động tốt trong ứng dụng của tôi.

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