有没有人在运行 MAMP 时遇到过 iconv_strlen 函数的问题?
4 回答
我一直遇到超时问题,但没有抛出任何异常。我正在开发 Zend Framework 站点。通过深入了解调试器,我将问题追溯到 iconv_strlen 的使用。它不会被任何奇怪的字符串调用,它是一个用于验证主机名的简单函数。
为了验证这个问题,我尝试了一个简单的 iconv_strlen("test", 'UTF-8'); 这会导致出现错误 - 浏览器中无休止的旋转加载程序,但没有错误日志消息,并且脚本超出了最大执行时间。在这个版本的 PHP 中,这似乎是一个未被发现的大问题。
我的同事发现这篇文章可能会解决这个问题。我在 Mac OS X 机器上更新到最新的 Snow Leopard,即 10.6。这似乎是一个已知的错误,如果您构建自己的 php 或使用内置的 Apple 版本或使用端口,则有一种解决方法。
- 错误 #49267 iconv 的链接失败:“未定义的符号:_libiconv”
- Mac OS 10.6 (Snow Leopard) 上的 PHP 5.3.0 - Fabien Potencier;2009 年 11 月 5 日
长话短说,您可以使用上述补丁深入研究重新编译自己的 php,但这首先违背了 MAMP 的观点。
最快的解决方案就是永远不要使用 iconv_strlen()(或任何 iconv_ 函数)——如果你使用 Zend Framework,这不是一个选项——或者恢复 MAMP 以使用 php 5.2。
在 MAMP 开始包含 php 源文件并提供一种方法来轻松重新编译与所有必需库捆绑在一起的 php 之前,这必然仍然是包的限制。MAMP 工作得很好,直到您需要重新编译 php。发生这种情况时,简单地使用端口会容易得多。
万一有人仍然遇到这个问题,我为此苦苦挣扎了很长时间,但是在 OSX Lion 上升级到最新版本的 MAMP Pro 似乎对我有用。
wbond,你有点搞混了。MAMP 1.9.4 可以 100% 正常工作。从 1.9.5 到 2.0.1 的任何版本的 MAMP 都包含“iconv”问题。另外,我在 MAMP 2.0.1 中的 PHP 5.3.6 中测试了您的解决方案,但它不起作用。唯一的解决方案是回滚到 MAMP 1.9.4 或使用最新的 MAMP 但将 PHP 回滚到 5.2.x。
<?php
$str = 'Hello, world!';
$str = iconv_function('UTF-8', 'UTF-8//IGNORE', $str);
echo $str;
function iconv_function ($in_charset, $out_charset, $str) {
return iconv($in_charset, $out_charset, $str);
}
?>
根据 MAMP 论坛,2.x 版(2011 年 8 月 17 日发布的 2.0.2)的新更新解决了 iconv 问题。是的!