[英]MAMP PRO 3.2.1 not displaying PHP errors
将我的MAMP PRO(在OS X Yosemite 10.10.3上)更新到最新版本3.2.1后,它停止显示错误。 在MAMP PRO中,您可以在PHP选项卡的GUI中设置错误显示选项。 一切都在那里有一个复选框(使用德语,但显示诸如“所有错误” [已选中],“显示” [已选中]之类的内容)。
当我用phpinfo()检查时, display_errors
为On
, error_reporting
为32767
(应该等效于E_ALL
)。
但是,如果我做类似array_merge(false, array())
事情array_merge(false, array())
我不会得到任何错误。 如果我错过了分号(语法错误),则会得到空白页。
我尝试完全删除MAMP PRO,然后多次重新安装,即使在重新启动后也无济于事。 那里的所有“解决方案”都说您应该将display_errrors = On
和error_reporting = E_ALL
放到这里,这也是我使用的正确的php.ini(经phpinfo()验证)的结果。
当我放
error_reporting(E_ALL);
ini_set('display_errors', 'On');
在错误上方的PHP代码中,例如,对于array_merge(false, array())
,我终于收到一条错误消息“ Message:array_merge():Argument#1 is a array”,这是我期望的,但我想要无需在我的PHP代码中使用ini_set即可获取该消息。 此外,即使使用此方法,语法错误仍然没有显示。
我花了几个小时在此上,并且非常感谢您为解决此问题提供帮助。
好吧,我终于明白了。 我正在处理的应用程序正在使用Codeigniter,并且在index.php中,将ENVIRONMENT
常量错误地设置为“ production”,从而将error_reporting设置为0,如下所示:
case 'production':
error_reporting(0);
break;
一旦将ENVIRONMENT
常量设置为“开发”,它就会按预期工作。
那么,为什么在升级到最新的MAMP PRO 3.2.1之后会发生这种情况? 设置ENVIRONMENT
常量的代码检查$_SERVER['SERVER_ADDR'] == '127.0.0.1'
,如果为true,则将ENVIRONMENT设置为development:
if ($_SERVER['SERVER_ADDR'] == '127.0.0.1') {
define('ENVIRONMENT', 'development');
}
在最新的MAMP PRO中, $_SERVER['SERVER_ADDR']
不再是127.0.0.1
而是::1
。 v3.2的变更日志说:
每个主机都在/ etc / hosts中获得IPv6条目:: 1
相当棘手的东西。 我现在使用$_SERVER['HTTP_HOST']
代替$_SERVER['SERVER_ADDR']
来设置ENVIRONMENT
常量。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.