提问人:maesk 提问时间:5/13/2015 更新时间:5/13/2015 访问量:284
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中,您可以在GUI的PHP选项卡上设置错误显示选项。所有内容都有一个复选框(它是德语的,但它说的是“所有错误”[选中],“显示”[选中])。
当我使用 phpinfo() 检查时,is 和 is(应该等效于 )。display_errors
On
error_reporting
32767
E_ALL
但是,如果我做类似的事情,我不会出错。如果我错过了分号(语法错误),我会得到一个空白页。array_merge(false, array())
我尝试完全删除MAMP PRO并多次重新安装它,即使在重新启动后也无济于事。所有“解决方案”都说你应该放,这就是我所拥有的,它也使用了我用 phpinfo() 验证的正确php.ini。display_errrors = On
error_reporting = E_ALL
当我把
error_reporting(E_ALL);
ini_set('display_errors', 'On');
在我的PHP代码中,就在错误上方,例如对于,我终于收到一条错误消息“消息:array_merge():参数#1不是数组”,这是我所期望的,但我想得到该消息,而不必在我的PHP代码中使用ini_set。此外,即使使用此方法,语法错误仍未显示。array_merge(false, array())
我花了几个小时来解决这个问题,非常感谢任何帮助来解决这个问题。
答:
好吧,我终于想通了。我正在开发的应用程序正在使用 Codeigniter,在index.php中,常量被错误地设置为 'production',这反过来又将 error_reporting 设置为 0,如下所示:ENVIRONMENT
case 'production':
error_reporting(0);
break;
一旦我将常量设置为“开发”,它就会按预期工作。ENVIRONMENT
那么,为什么在升级到最新的MAMP PRO 3.2.1后会发生这种情况呢?设置常量的代码检查是否为 true 和 if true,将 ENVIRONMENT 设置为 development:ENVIRONMENT
$_SERVER['SERVER_ADDR'] == '127.0.0.1'
if ($_SERVER['SERVER_ADDR'] == '127.0.0.1') {
define('ENVIRONMENT', 'development');
}
在最新的MAMP PRO中,不再是,而是.v3.2 的更新日志说:$_SERVER['SERVER_ADDR']
127.0.0.1
::1
每个主机在 /etc/hosts 中获取 IPv6 条目 ::1
非常棘手的东西。我现在使用 instead to 设置常量。$_SERVER['HTTP_HOST']
$_SERVER['SERVER_ADDR']
ENVIRONMENT
评论