HHVM выводит код состояния 200 при фатальных ошибках, и я не могу использовать fastcgi_next_upstream из-за этого
Я хотел откатиться на следующий апстрим (php5-fpm) на nginx, когда HHVM дает сбой. В настоящее время это невозможно, потому что выходы HHVM 200 OK
Код ответа после фатальной ошибки. По крайней мере, я хотел дать более информативный код статуса.
Журнал ошибок PHP:
\nFatal error: $this is null in /data/wordpress/htdocs/wp-content/plugins/woocommerce-gateway-klarna/classes/class-klarna-account.php on line 1231
И я точно знаю, что это работает в php5-fpm.
Версия HHVM:
hhvm --version
HipHop VM 3.4.0 (rel)
Compiler: tags/HHVM-3.4.0-0-g817b3a07fc4e509ce15635dbc87778e5b3496663
Repo schema: 0e12aaa31fae66b5591f65603de50c9d62caafac
Extension API: 20140829
1 ответ
Решение
Я исправил это, введя собственный обработчик ошибок для hhvm.
мой index.php
для WordPress:
<?php
/**
* HHVM outputs http status: 200 OK even on fatal errors.
* Catch fatal errors on HHVM and put right response code.
*/
//Is this HHVM?
if (defined('HHVM_VERSION')) {
set_error_handler('catch_fatal_error_hhvm',E_ERROR);
}
function catch_fatal_error_hhvm() {
http_response_code(500);
die();
}
// WordPress view bootstrapper
define('WP_USE_THEMES', true);
require(dirname( __FILE__ ) . '/wordpress/wp-blog-header.php');