Skip to content

Commit

Permalink
Revert "SC_Helper_HandleError で定義前の ERROR_LOG_REALFILE が使われることがある #808"
Browse files Browse the repository at this point in the history
This reverts commit 795ce7c.

ローカルで phpunit を通すため cherry-pick していたものを誤って含めてしまった。
  • Loading branch information
seasoftjapan committed Jan 4, 2024
1 parent 795ce7c commit b2429c8
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 35 deletions.
45 changes: 13 additions & 32 deletions data/class/helper/SC_Helper_HandleError.php
Original file line number Diff line number Diff line change
Expand Up @@ -34,9 +34,6 @@ class SC_Helper_HandleError
/** エラー処理中か */
static $under_error_handling = false;

/** display_errors の初期値 */
static $default_display_errors;

/**
* 処理の読み込みを行う
*
Expand All @@ -54,16 +51,21 @@ public static function load()
// 開発時は -1 (全て) を推奨
error_reporting(E_ALL & ~E_NOTICE & ~E_USER_NOTICE);

static::$default_display_errors = ini_get('display_errors');

if (!(defined('SAFE') && SAFE === true) && !(defined('INSTALL_FUNCTION') && INSTALL_FUNCTION === true)) {
// E_USER_ERROR または警告を捕捉した場合のエラーハンドラ
set_error_handler(array(__CLASS__, 'handle_warning'), E_USER_ERROR | E_WARNING | E_USER_WARNING | E_CORE_WARNING | E_COMPILE_WARNING);

// E_USER_ERROR 以外のエラーを捕捉した場合の処理用
register_shutdown_function(array(__CLASS__, 'handle_error'));
// 以降の処理では画面へのエラー表示は行なわない
ini_set('display_errors', 0);
// 実質的に PHP 5.2 以降かで処理が分かれる
if (function_exists('error_get_last')) {
// E_USER_ERROR 以外のエラーを捕捉した場合の処理用
register_shutdown_function(array(__CLASS__, 'handle_error'));
// 以降の処理では画面へのエラー表示は行なわない
ini_set('display_errors', 0);
} else {
// エラー捕捉用の出力バッファリング
ob_start(array(__CLASS__, '_fatal_error_handler'));
ini_set('display_errors', 1);
}
}
}

Expand All @@ -90,22 +92,10 @@ public static function handle_warning($errno, $errstr, $errfile, $errline)
return;
}

// パラメーターが読み込まれるまでは、PHP 標準のエラー処理とする。
// - phpunit の実行中に Warning が出力されることでテストが失敗するテストケースがあっため、除外している。
if (!defined('ERROR_LOG_REALFILE') && !(defined('TEST_FUNCTION') && TEST_FUNCTION === true)) {
return false;
}

$error_type_name = GC_Utils_Ex::getErrorTypeName($errno);

switch ($errno) {
case E_USER_ERROR:
// パラメーターが読み込まれるまでは、エラー例外をスローする。(上の分岐があるため phpunit の実行中に限定される。)
if (!defined('ERROR_LOG_REALFILE')) {
ini_set('display_errors', static::$default_display_errors);
throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
}

$message = "Fatal error($error_type_name): $errstr on [$errfile($errline)]";
GC_Utils_Ex::gfPrintLog($message, ERROR_LOG_REALFILE, true);

Expand All @@ -117,10 +107,8 @@ public static function handle_warning($errno, $errstr, $errfile, $errline)
case E_USER_WARNING:
case E_CORE_WARNING:
case E_COMPILE_WARNING:
if (defined('ERROR_LOG_REALFILE')) {
$message = "Warning($error_type_name): $errstr on [$errfile($errline)]";
GC_Utils_Ex::gfPrintLog($message, ERROR_LOG_REALFILE);
}
$message = "Warning($error_type_name): $errstr on [$errfile($errline)]";
GC_Utils_Ex::gfPrintLog($message, ERROR_LOG_REALFILE);

return true;

Expand All @@ -141,7 +129,6 @@ public static function handle_warning($errno, $errstr, $errfile, $errline)
* @param string $buffer 出力バッファリングの内容
* @return string|void エラーが捕捉された場合は, エラーページへリダイレクトする;
* エラーが捕捉されない場合は, 出力バッファリングの内容を返す
* @deprecated 2.18 EC-CUBE 本体では使用していない。
*/
static function &_fatal_error_handler(&$buffer)
{
Expand Down Expand Up @@ -192,12 +179,6 @@ public static function handle_error()
return;
}

// パラメーターが読み込まれるまでは、エラー例外をスローする。
if (!defined('ERROR_LOG_REALFILE')) {
ini_set('display_errors', static::$default_display_errors);
throw new ErrorException($arrError['message'], 0, $arrError['type'], $arrError['file'], $arrError['line']);
}

$error_type_name = GC_Utils_Ex::getErrorTypeName($arrError['type']);
$errstr = "Fatal error($error_type_name): {$arrError['message']} on [{$arrError['file']}({$arrError['line']})]";

Expand Down
3 changes: 0 additions & 3 deletions tests/require.php
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
<?php
$loader = require __DIR__.'/../data/vendor/autoload.php';

/** テスト中 */
define('TEST_FUNCTION', true);

if (strpos($_SERVER['SCRIPT_FILENAME'], 'phpunit') !== false && !class_exists('\Eccube2\Tests\Fixture\Generator')) {
echo 'You must set up the project dependencies, run the following commands:'.PHP_EOL.
'composer require nanasess/eccube2-fixture-generator --dev --ignore-platform-req=php'.PHP_EOL;
Expand Down

0 comments on commit b2429c8

Please sign in to comment.