[英]Disabling Strict Standards in PHP 5.4
我目前在 php 5.4 上运行一个站点,在此之前我在 5.3.8 上运行我的站点。 不幸的是,php 5.4 结合了E_ALL
和E_STRICT
,这意味着我之前的error_reporting
设置现在不起作用。 我之前的值是E_ALL & ~E_NOTICE & ~E_STRICT
我应该一次只启用一个值吗?
我有太多错误,而且文件包含太多代码需要我修复。
正如评论者所说,最好的选择是修复错误,但在时间或知识有限的情况下,这并不总是可能的。 在你的 php.ini 更改
error_reporting = E_ALL
到
error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT
如果您无权访问 php.ini,则可以将其放入 .htaccess 文件中:
php_value error_reporting 30711
这是 E_ALL 值 (32767) 以及删除 E_STRICT (2048) 和 E_NOTICE (8) 值。
如果您无权访问 .htaccess 文件或未启用它,您可能需要将它放在从浏览器调用加载的任何脚本的 PHP 部分的顶部:
error_reporting(E_ALL & ~E_STRICT & ~E_NOTICE);
其中之一应该可以帮助您使用该软件。 通知和严格的内容是问题或潜在问题的指标,您可能会发现某些代码在 PHP 5.4 中无法正常工作。
.htaccess php_value 仅在您使用 PHP Server API 作为 Web 服务器 Apache 的模块时才有效。 使用 IfModule 语法:
# PHP 5, Apache 1 and 2.
<IfModule mod_php5.c>
php_value error_reporting 30711
</IfModule>
如果你使用 PHP Server API CGI/FastCGI 使用
ini_set('error_reporting', 30711);
或者
error_reporting(E_ALL & ~E_STRICT & ~E_NOTICE);
在您的 PHP 代码或 PHP 配置文件中 .user.ini | php.ini 修改:
error_reporting = E_ALL & ~E_STRICT & ~E_NOTICE
在您的虚拟主机,服务器级别。
当我同时在两个地方设置 error_reporting 时,它对我有用
PHP 代码中的某处
ini_set('error_reporting', 30711);
并在 .htaccess 文件中
php_value error_reporting 30711
如果您还需要禁用 E_DERACATED,请使用:
php_value error_reporting 22527
就我而言,CMS Made Simple 抱怨“在 error_reporting 中启用了 E_STRICT”以及“启用了 E_DEPRECATED”。 将这一行添加到 .htaccess 解决了两个错误配置。
注意,您可能需要重新启动 LAMP、Apache 或任何您使用的工具才能使其生效。 在这个问题上绞尽脑汁,在服务重新启动之前似乎没有任何影响,大概是因为网站正在缓存。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.