MAMP PRO 3.2.1不显示PHP错误

时间:2015-05-13 00:19:50

标签: php configuration error-reporting mamp-pro

将我的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())之类的操作,我就不会收到任何错误。如果我错过了分号(语法错误),我会得到一个空白页面。

我尝试完全删除MAMP PRO并重新安装多次,即使重新启动后也无济于事。所有"解决方案"在那里说你应该放display_errrors = Onerror_reporting = E_ALL这就是我所拥有的,它也使用我用phpinfo()验证的正确的php.ini。

当我把

error_reporting(E_ALL);
ini_set('display_errors', 'On');

在我的PHP代码中,就在错误之上,例如对于array_merge(false, array()),我终于得到一条错误消息"消息:array_merge():参数#1不是数组"这是我的期望,但我希望得到该消息,而不必在我的PHP代码中使用ini_set。此外,即使使用此方法,语法错误仍未显示。

我在这上花了几个小时,非常感谢任何帮助来解决这个问题。

1 个答案:

答案 0 :(得分:1)

好的,我终于明白了。我正在使用的应用程序是使用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'是否为真,将环境设置为开发:

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常量。