繁体   English   中英

在 PHP 5.4 中禁用严格标准

[英]Disabling Strict Standards in PHP 5.4

我目前在 php 5.4 上运行一个站点,在此之前我在 5.3.8 上运行我的站点。 不幸的是,php 5.4 结合了E_ALLE_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.

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