我可以禁止PHP覆盖$($('.total_cost')[0])
error_reporting设置吗?并仅从php.ini
获得此设置。
php.ini
但是此PHP行位于项目核心中,我无法对其进行编辑,并且我不需要php.init file have: error_reporting = E_ERROR|E_PARSE
PHP code have: error_reporting(E_WARNING|E_PARSE);
。
答案 0 :(得分:1)
我可以禁止PHP覆盖php.ini错误报告设置吗?
可以使用disable_functions配置指令在代码中禁止使用error_reporting()
函数。缺点是你不能拥有
disable_functions = error_reporting
为每个虚拟主机设置(即通过php_admin_value
),但必须在主php.ini
中设置,这在某些配置中可能会出现问题。
我也相信您的问题暴露了另一个问题,您不是在这里解决它,而是解决它。
答案 1 :(得分:0)
编辑:发生在我身上,您可以使用php runkit来做到这一点,而不用弄乱源代码,
选项1:
安装runkit(https://github.com/zenovich/runkit / https://github.com/runkit7/runkit7),在php.ini中添加runkit.internal_override=1
,然后运行
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选项指向的文件中,以确保它在任何其他代码之前运行)
在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/ab8094c666048b747481df0b9da94e08cadc4160/Zend/zend_builtin_functions.c#L736