【问题标题】:iconv_strlen function causing execution timeout, running on MAMPiconv_strlen 函数导致执行超时,在 MAMP 上运行
【发布时间】:2011-07-20 23:39:53
【问题描述】:

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

【问题讨论】:

  • 字符串在PHP中是如何存储的?使用\0 还是携带长度?
  • 它们携带一个字节长度,但没有编码。 iconv_strlen 跨字符编码转换字符串,然后返回 字符 计数,而不是字节长度。
  • @blacktie24,您能否向我们提供一个导致问题的示例字符串?通过rawurlencode 运行后,您可以安全地将其发布到此处,以确保我们获得实际正确的字节。 (我已经重新标记了你的帖子。)
  • @Charles 感谢您的澄清。顺便说一句,你有什么关于这个主题的进一步推荐阅读吗?
  • @alex, here's the answer I was thinking of。不幸的是我记错了参考!手册中十年前的评论不会是权威的。

标签: php character-encoding mamp iconv


【解决方案1】:

我一直遇到超时问题,但没有抛出任何异常。我正在开发 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。发生这种情况时,简单地使用端口会容易得多。

【讨论】:

  • user673450,这正是我遇到的问题。感谢有关潜在解决方法的信息。
  • 我在使用 iconv_strpos 时遇到了同样的问题,但仅在 5.3.5 中。它可以在我的另一台机器上运行 5.3.2.... 那么这怎么可能呢?
  • 谢谢。很高兴知道我不会发疯。在 Mamp Pro 2.0.1 中这对我来说仍然是一个问题。
  • @spankmaster79 是的,我在 PHP 5.3 上运行 Magento 的问题已经解决了
【解决方案2】:

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

【讨论】:

  • 我有 Mamp Pro 2.0.1 和 PHP5.3 仍然坏
  • 问题已在 MAMP 2.0.2 中修复
【解决方案3】:

【讨论】:

  • 从 1.9 升级必须付费的绝对笑话!
  • 无需付费升级 MAMP。一个人只需要为 MAMP PRO 付费,而不是普通的 MAMP,而且一直都是这样。
【解决方案4】:

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

?>

【讨论】:

    猜你喜欢
    • 2016-06-30
    • 1970-01-01
    • 2016-08-05
    • 2021-09-16
    • 2015-09-22
    • 2013-08-27
    • 2018-03-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多