редактировать: только что пришло мне в голову, вы можете использовать php runkit, чтобы сделать это вместо того, чтобы возиться с исходным кодом,
вариант 1: установить runkit ( https://github.com/zenovich/runkit / https://github.com/runkit7/runkit7), добавьте runkit.internal_override=1
в php.ini и запустите
runkit_function_rename("error_reporting","original_error_reporting");
runkit_function_add("error_reporting",function(int $ignored = NULL){return original_error_reporting();});
перед запуском предполагаемого кода (вы также можете добавить этот код в файл, на который указывает параметр auto_prepend_file
php.ini, чтобы убедиться, что он запускается перед любым другим кодом)
- или вариант 2: отредактируйте исходный код интерпретатора php,
в php-src/Zend/zend_builtin_functions.c найдите
/* {{{ proto int error_reporting([int new_error_level])
Return the current error_reporting level, and if an argument was passed - change to the new level */
ZEND_FUNCTION(error_reporting)
затем прямо под этим найти
if (ZEND_NUM_ARGS() != 0) {
заменить его на
if (0) {
затем перекомпилируйте PHP, и вуаля, аргументы error_reporting игнорируются :)
в версии git ab8094c666048b747481df0b9da94e08cadc4160 , то есть 7.3.0-dev (чуть позже 7.3.0-beta1), это строка 736, см. https://github.com/php/php-src/blob/ab8094c666048b747481df0b9da94s6indc4160/Zend_builtin_function/Zend_builtin_functions4160/Zend/zend_builtin_functions.c#L736"
person
hanshenrik
schedule
08.08.2018