有沒有人在運行MAMP時有iconv_strlen函數的問題?iconv_strlen函數導致執行超時,在MAMP上運行
回答
我一直有一個超時問題,但沒有任何異常被拋出。我正在開發一個Zend Framework網站。通過深入研究調試器,我將問題追溯到iconv_strlen的使用。它不會被任何奇怪的字符串調用,它是一個用於驗證主機名的簡單函數。
爲了驗證問題,我嘗試了一個簡單的iconv_strlen(「test」,'UTF-8');這會導致錯誤出現 - 瀏覽器中的無限旋轉加載器,但沒有錯誤日誌消息,並且腳本超出了最大執行時間。看來這是這個版本的PHP中未被捕獲的大事。
我的同事發現這篇文章可能解決這個問題。我在一臺Mac OS X機器上升級到最新的Snow Leopard,它是10.6。看起來,這是一個已知的錯誤,如果您構建自己的php或使用內置Apple版本或使用端口,則有一種解決方法。
- Bug #49267 Linking fails for iconv: "Undefined symbols: _libiconv"
- PHP 5.3.0 on Mac OS 10.6 (Snow Leopard) - Fabien Potencier; 05 Nov 2009
長話短說,你可以深入到上述補丁重新編譯自己的PHP,但這種失敗的MAMP的擺在首位的點。
最快的解決方案是簡單地不要使用iconv_strlen()(或任何iconv_函數) - 如果您使用Zend Framework,這不是一個選項 - 否則還原MAMP以使用PHP 5.2。
直到MAMP開始包含php源文件並提供一種方法來輕鬆地重新編譯與所有必要的庫捆綁在一起的php,這將是必然的限制。 MAMP很好,直到你到了需要重新編譯php的地步。當發生這種情況時,簡單地使用端口就容易得多。
user673450,這是我遇到的確切問題。 Thx提供潛在解決方法的信息。 – blacktie24 2011-03-23 19:36:43
我與iconv_strpos有同樣的問題,但只在5.3.5。它在我的另一臺機器上運行5.3.2 ....所以這怎麼可能? – spankmaster79 2011-04-06 15:32:50
謝謝。很高興知道我不會發瘋。這對我在Mamp Pro 2.0.1中仍然是個問題。 – Steve 2011-08-02 07:48:04
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);
}
?>
- 1. display()函數導致運行時錯誤
- 2. 在運行時更改執行超時
- 3. xdebug不在mamp上運行
- 4. 在mamp上運行php
- 5. 在PHP超時運行PHP函數
- 6. 運行cron.php thows「超出最大執行時間」致命錯誤
- 7. 防止jQuery .scroll函數在執行.scroll函數時運行
- 8. 函數超過最大執行時間
- 9. fwrite函數在酒中運行時導致異常
- 10. 的BluetoothSocket isConnected()函數導致java.lang.NoSuchMethodError在運行時
- 11. 導致運行時崩潰!
- 12. OSGi模塊在從Netbeans運行時導致運行時錯誤
- 13. 程序在特定的機器上運行時導致運行時錯誤
- 14. 什麼可能導致函數的最後兩行不執行?
- 15. 爲什麼這個PHP會導致執行超時?
- 16. RSA加密導致服務器執行超時
- 17. Spark 1.6.0執行程序因類ClassCastException而死,並導致超時
- 18. 在MAMP上運行mysql的問題
- 19. 刪除行導致鎖定超時
- 20. 調用靜態成員函數會導致運行時錯誤
- 21. OpenCV 2.4.2 imread函數導致運行時錯誤
- 22. 程序正在運行,但導致垃圾值執行顯示
- 23. 在定時器上運行函數
- 24. 如何停止點擊運行超時jquery函數並運行新函數?
- 25. 如果AssemblyCleanup超時,如何導致測試運行錯誤?
- 26. 在很多行上執行函數
- 27. 在多行上執行表值函數?
- 28. 致命錯誤:在64行上超過30秒的最大執行時間
- 29. 在導軌上執行即時超快速反饋
- 30. 這會導致執行時鎖嗎?
字符串如何存儲在PHP中?用'\ 0'或者他們攜帶一個長度? – alex 2011-03-23 02:24:47
它們以字節爲單位,但沒有編碼。 ['iconv_strlen'](http://us2.php.net/manual/en/function.iconv-strlen.php)通過字符編碼轉換字符串,然後返回*字符*計數,而不是字節長度。 – Charles 2011-03-23 02:59:59
@ blacktie24,你能否給我們提供一個導致問題的示例字符串?通過'rawurlencode'運行後,您可以放心地發佈它,以確保獲得實際正確的字節。 (我已經重新發布了你的帖子。) – Charles 2011-03-23 03:01:19