繁体   English   中英

在.htaccess中设置php_value时发生意外错误?

[英]Accidental error in setting php_value in .htaccess?

因此,当我当前在PHP中查看phpinfo()时,我的error_reporting设置为某个数字,该数字表示所有错误常量值的总和,对吗?
假设,我在.htaccess中意外地将error_reporting的值意外地设置为一些奇怪的值:

  1. -1
  2. 大于E_ALL的值(例如,如果我正确,则为32768)
  3. 用字符串设置它时,我会(**E_AL** & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED)错字

会发生什么,将其设置为某些默认值吗? 还是来自php.ini? 我尝试设置以上所有值,并且都在“ Local Value中设置了所有Local Value没有任何问题。
我很好奇其他值也会发生什么,它将默认为php.ini还是什么?
谢谢!

PHP使用按位运算符来确定是否应报告错误级别。因此,无论您的整数值是二进制值,它都将按位&查看是否报告了错误。

例如,如果使用E_DEPRECATED | E_DEPRECATED是(不是说这是正确的):01,E_WARNING是10,E_NOTICE是100。 E_WARNING | E_NOTICE将提供二进制文件111,因此,当报告错误时(例如E_WARNING),它将采用设置的值,并按位与它确定是否显示报告:

111&010 = True,因此将报告错误。

如果您只是使用过E_DEPRECATED | E_NOTICE,二进制为101,所以101&010 = False,因此不会报告错误。

这些二进制文件中的每一个都可以转换为base10、01 = 1、10 = 2、100 = 4等。

因此,如果您对随机整数会报告哪些错误感到好奇,可以执行以下操作:

int & E_WARNING在您的PHP解析器中,如果其为True,则将显示错误,如果其为FALSE,则将忽略该错误。

这是一个很好的学习习惯,因为它在实现应用程序登录时也非常有用,您可以使用相同的系统,因此不必实施长时间的切换,也不必执行.. elseif ..块来确定是否是否根据配置记录日志级别。

  /**
   * Determines whether this message should be logged based on the provided type and the set threshold
   * @access protected
   * @param  int $type
   * @param  string   $name name of the log to check.
   * @return boolean
   */
  protected function should_log($type,$name='default') {
    return (bool) ($this->getConfig($name)->threshold & $type);
  }

因此,阈值将是您配置中的二进制数(使用常量以提高可读性),然后按位和提供的日志类型返回True或False,以确定是否将消息以名称$name的形式记录到记录器中。更优化。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM