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我应该一次只启用一个值吗?
我有太多错误,文件包含太多代码供我修复。
-
建议...修复代码,否则错误将变得越来越好,并且调试起来更加困难
-
s /不幸/幸运的是
-
感谢您的建议,但是我缺乏重新编写整个jfusion phpbb3插件所需的知识。感谢您的屈尊。
-
仅仅因为错误出现在php 5.4中并不意味着它们在较早的版本中不存在,我很确定在此版本中错误报告得到了加强,因为php的开发人员正朝着更严格的语言发展。
-
我同意我们的朋友的意见,您应该尝试修复错误,它们可能会咬住您的脚踝,并且掩盖所有错误使调试变得困难。但是我也不认为应该为这个孤独的问题来判断发布者是否公平,如果您因为客户正在打电话给未出生的孩子打电话而使您没必要做一些丑陋的工作,那么您还没有在IT领域工作过那么长时间
-
这是一个完全合理的问题,是@icomrade-您对这里的自尊心和嘲讽是正确的。它是StackOverflow吸引力较低的特征之一。话虽如此,我还是建议您至少解决一些警告,即使您不能全部解决。
-
我计划修复错误,我只是不需要100mb的错误日志,因为我已经拥有所有错误的副本。
-
只是回答人们的问题。没有人要求您的专家意见!
-
只是给Google员工的说明,我建议您在任何生产环境中消除警告。
正如评论者所说,最好的选择是修复错误,但时间或知识有限,这并非总是可能的。在您的php.ini中更改
至
如果您无权访问php.ini,则可以将其放在.htaccess文件中:
这是E_ALL值(32767)并除去E_STRICT(2048)和E_NOTICE(8)值。
如果您无权访问.htaccess文件或未启用该文件,则可能需要将此文件放在通过浏览器调用加载的所有脚本的PHP部分的顶部:
其中之一应该可以帮助您使用该软件。声明和严格的内容是指示问题或潜在问题的指示器,并且您可能会发现某些代码在PHP 5.4中无法正常工作。
希望这可以帮助。
-
感谢您的帮助,这似乎可以解决大多数严格的错误。
-
我使用的是PHP 5.4.5,我尝试了上述所有方法,但是我无法禁用严格的通知:(还有其他想法吗?
-
您可以尝试将&?E_DEPRECATED以及其他部分放入error_reporting()中。您看到什么讯息?
-
@roko您的代码是否有可能在某个地方覆盖了此代码?在php.ini中禁用它后,我仍然看到严格的错误,然后我意识到这仅适用于某些网站,使用Drupal的网站是在代码中设置的
-
有没有办法对error_log文件(而不是PHP文件)做同样的事情?
-
@AndrewSpear您对error_log文件执行相同的操作是什么意思?
-
@ david-stockton我发现上面的.htaccess解决方案可用于更改PHP页面本身上的错误输出,但不会影响出现在站点error_log文件中的错误。 (CentOS / cPanel)
-
@AndrewSpear那很奇怪。从理论上讲,error_reporting设置应该影响显示在任何地方的错误。 display_errors设置应该影响您是否在输出中(在PHP页面中)获得错误,并且error_log将影响将错误写入日志的位置。如果display_errors处于打开状态,则您应该在屏幕上看到与日志中相同的错误。
-
@ david-stockton感谢您的澄清,这可能与我的服务器配置有关,我会仔细研究一下。
-
+1可以用一个简单的答案回答一个简单的问题,而不会变成StackOverflow Smuglord?。
-
+1为.htaccess方法。
-
Nb。由于error_reporting设置可以设置为多个级别,因此报告"不工作"的人们可能会在应用程序级别覆盖其低级别(例如apache config或php.ini)设置。例如Drupal 7本身对此进行管理(位于/ admin / config / development / logging FWIW)。希望至少对其他Drupal用户有所帮助。
只有将PHP Server API用作Web服务器Apache的模块时,.htaccess php_value才有效。
使用IfModule语法:
1 2 3 4
| # PHP 5, Apache 1 and 2.
<IfModule mod_php5 .c >
php_value error_reporting 30711
</IfModule > |
如果您使用PHP Server API CGI / FastCGI,请使用
要么
在您的PHP代码中,
或PHP配置文件.user.ini | php.ini修改:
在您的虚拟主机上,服务器级别。
如果还需要禁用E_DEPRACATED,请使用:
在我的情况下,CMS Made Simple抱怨"在错误报告中启用了E_STRICT"以及"已启用E_DEPRECATED"。在.htaccess中添加一行可以解决这两种错误配置。
当我同时在两个地方设置error_reporting时,它为我工作
PHP代码中的某处
和.htaccess文件中
-
唯一无法访问php.ini的对我有用的东西,上面的另一个工作本身,仅返回500错误。俩在一起宝贝!
抬起头来,您可能需要重新启动LAMP,Apache或任何其他使此生效的方法。在这个问题上,我们花了一段时间的精力,似乎没有任何影响,直到重新启动服务为止,大概是因为网站正在缓存。
-
不。这是因为Apache需要重新加载PHP的设置。仅当服务启动时才完成AFAIK。