簡體   English   中英

iconv_strlen函數導致執行超時,在MAMP上運行

[英]iconv_strlen function causing execution timeout, running on MAMP

運行MAMP時有沒有人遇到過iconv_strlen函數的問題?

我一直遇到超時問題,但沒有拋出任何異常。 我正在開發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。 當發生這種情況時,簡單地使用端口要容易得多。

如果有人仍然遇到這個問題,我已經掙扎了很多年了,但升級到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);
}

?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM