繁体   English   中英

MAMP PRO 3.2.1不显示PHP错误

[英]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_errorsOnerror_reporting32767 (应该等效于E_ALL )。

但是,如果我做类似array_merge(false, array())事情array_merge(false, array())我不会得到任何错误。 如果我错过了分号(语法错误),则会得到空白页。

我尝试完全删除MAMP PRO,然后多次重新安装,即使在重新启动后也无济于事。 那里的所有“解决方案”都说您应该将display_errrors = Onerror_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.

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