iconv_strlen函数导致执行超时,在MAMP上运行

时间:2011-03-23 02:20:53

标签: php character-encoding mamp iconv

运行MAMP时有没有人遇到过iconv_strlen函数的问题?

4 个答案:

答案 0 :(得分:16)

我一直遇到超时问题,但没有抛出任何异常。我正在开发Zend Framework网站。通过深入调试调试器,我将问题跟踪到iconv_strlen的使用。它没有被任何奇怪的字符串调用,它是一个用于验证主机名的简单函数。

为了验证这个问题,我尝试了一个简单的iconv_strlen(“test”,'UTF-8');这会导致错误出现 - 在浏览器中无限旋转加载器但没有错误日志消息,并且脚本超出了最大执行时间。在这个版本的PHP中,这似乎是一个未被捕获的大文章。

我的同事发现这篇文章可能会解决这个问题。我在Mac OS X机器上更新到最新的Snow Leopard,即10.6。这似乎是一个已知的错误,如果你构建自己的php或使用内置的Apple版本或使用端口,有一个解决方法。

长话短说,您可以通过上面的补丁深入研究重新编译自己的php,但这种方式首先打败了MAMP。

最快的解决方案就是永远不要使用iconv_strlen()(或任何iconv_函数) - 如果您使用Zend Framework,这不是一个选项 - 或者还原MAMP使用php 5.2。

直到MAMP开始包含php源文件并提供一种方法,通过该方法可以轻松地重新编译与所有必需库捆绑在一起的php,这必然是包的限制。 MAMP工作得很好,直到你需要重新编译php。当发生这种情况时,简单地使用端口要容易得多。

答案 1 :(得分:1)

如果有人仍然遇到这个问题,我已经挣扎了好几年了,但是在OSX Lion上升级到最新版本的MAMP Pro似乎对我有用。

答案 2 :(得分:0)

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);
}

?>

答案 3 :(得分:0)