2014-07-02 26 views
8

Tôi mới bắt đầu với hhvm/hack. Nhưng tôi muốn hiển thị các lỗi cho trình duyệt nhưng didnot có nó làm việc.Hiển thị lỗi nghiêm trọng/thông báo trong trình duyệt

tôi đặt các thiết lập ini như sau

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

Theo một var_dump của ini_get các giá trị đã được thiết lập để

string(5) "32767" 
string(1) "1" 

Nhưng khi tôi đã làm

<?hh 

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

throw new InvalidArgumentException('test'); 

Khi tôi đến thăm trang thông qua trình duyệt tôi sẽ chỉ nhận được một màn hình trắng và một tiêu đề 500 http. Vì vậy, không có explaintion của các lỗi nghiêm trọng/ngoại lệ.

Tuy nhiên, tôi sẽ đi qua thiết bị đầu cuối hhvm index.php Nó sẽ hiển thị;

Fatal error: Uncaught exception 'InvalidArgumentException' with message 'test' in /var/www/public/index.php:3 
Stack trace: 
#0 {main} 

Vì vậy, bây giờ là câu hỏi. Làm thế nào nó đến tôi không nhận được bất kỳ tin nhắn trong trình duyệt, nhưng làm trong cli? Và thứ hai là, tôi làm cách nào để nó hoạt động trong trình duyệt để hiển thị tin nhắn.

Tôi đã xem qua số questionthis one này. Nhưng đầu tiên, cũng giống nhau, nhưng unanswerd. Và thứ hai là nói điều gì đó về kiểm tra tĩnh. IE rằng một int được đưa ra vv, ít nhất đó là những gì tôi nghĩ rằng ông có nghĩa là.

Khác question Tôi đến, trông giống như của tôi, nhưng lại không được trả lời.

Và theo số docs nó sẽ hoạt động tôi đoán.

Đọc thêm về các tài liệu tôi đến accross

Mặc dù display_errors thể được thiết lập trong thời gian chạy (với chức năng ini_set()), nó sẽ không có bất kỳ ảnh hưởng nếu kịch bản có lỗi gây tử vong. Điều này là do hành động thời gian chạy mong muốn không được thực hiện.

Vì vậy, tôi nghĩ tốt một ngoại lệ là một lỗi nghiêm trọng vì vậy tôi chỉ làm $test = $bar + 1;

let này trong cli để

Notice: Undefined variable: bar in /var/www/public/index.php on line 8 
int(1) 

Một lần nữa trong trình duyệt

int(1) 

Vì vậy, tôi cũng không nhận được thông báo.

Khi tôi khởi động lại hhvm service hhvm restart Tôi cũng nhận được thông báo lỗi Log file not specified under daemon mode. không biết nếu nó có bất cứ điều gì để làm với nó

Trả lời

6

Vâng nó đã cho tôi một số tìm kiếm nhưng cuối cùng tìm thấy câu trả lời, see this github post. Tuy nhiên, nó không thể hiển thị lỗi nghiêm trọng. Nhưng thông báo được hiển thị

Vì vậy, tôi đã viết trình xử lý lỗi của riêng mình; nó không phải là hoàn thành nhưng hiện tại công việc.

Cảnh báo, không có kiểm tra cho ini display_errors

set_error_handler(function ($errorNumber, $message, $errfile, $errline) { 
    switch ($errorNumber) { 
     case E_ERROR : 
      $errorLevel = 'Error'; 
      break; 

     case E_WARNING : 
      $errorLevel = 'Warning'; 
      break; 

     case E_NOTICE : 
      $errorLevel = 'Notice'; 
      break; 

     default : 
      $errorLevel = 'Undefined'; 
    } 

    echo '<br/><b>' . $errorLevel . '</b>: ' . $message . ' in <b>'.$errfile . '</b> on line <b>' . $errline . '</b><br/>'; 
}); 
+0

Cảm ơn rất hữu ích. Làm việc cho tôi để có được một thông báo PHP để hiển thị trong HHVM. – jerclarke

1

Có thể rơi trở lại php khi hhvm thất bại. Khá đơn giản để làm điều đó - https://bjornjohansen.no/hhvm-with-fallback-to-php. Tôi hiểu rằng bạn có thể đính kèm dự phòng php cho mỗi mã lỗi (như 404). Vì vậy, không phải là nó có thể rơi trở lại máy chủ php cho thấy một trang tải nhật ký lỗi hhvm?

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