iconv_strlen вызывает таймаут выполнения, запущенный на MAMP

У кого-нибудь возникли проблемы с функцией iconv_strlen во время работы MAMP?

У меня проблема с тайм-аутом, но не с исключениями. Я работаю над сайтом Zend Framework. Следуя отладчику глубоко в кишки, я отследил проблему до использования iconv_strlen. Его не вызывают в какой-либо странной строке, это простая функция, используемая для проверки имени хоста.

Чтобы проверить проблему, я попробовал простую iconv_strlen («test», «UTF-8»); Это вызывает появление ошибки – бесконечный вращающийся загрузчик в браузере, но не сообщение журнала ошибок, и сценарий выходит за пределы максимального времени выполнения. Похоже, что в этой версии PHP это нецелесообразно.

Мой коллега нашел эту статью, которая могла бы решить эту проблему. Я на машине Mac OS X обновлен до последнего Snow Leopard, который составляет 10.6. Похоже, что это известная ошибка, и есть обходной путь, если вы создаете свой собственный php или используете встроенную версию Apple или используете порты.

  • Ошибка # 49267 Связывание с ошибкой для iconv: «Неопределенные символы: _libiconv»
  • PHP 5.3.0 на Mac OS 10.6 (Snow Leopard) – Fabien Potencier; 05 ноября 2009 г.

Короче говоря, вы можете вникать в перекомпиляцию своего собственного php с вышеупомянутым патчем, но этот вид побеждает точку MAMP в первую очередь.

Самое быстрое решение просто либо никогда не использует iconv_strlen () (или любую из функций iconv_) – и это не вариант, если вы используете Zend Framework, или еще раз верните MAMP для использования php 5.2.

До тех пор, пока MAMP не начнет включать исходные файлы php и предоставит метод, позволяющий легко перекомпилировать php в комплекте со всеми необходимыми библиотеками, это обязательно останется ограничением пакета. MAMP отлично работает, пока вы не дойдете до точки, где вам нужно перекомпилировать php. Когда это происходит, гораздо проще просто использовать порты.

В случае, если у кого-то все еще есть эта проблема, я долгое время боролся с этим, но обновление до самой последней версии MAMP Pro на OSX Lion, похоже, сработало для меня.

wbond, вы немного перепутались. MAMP 1.9.4 работает на 100% штрафа. Это любая версия MAMP от 1.9.5 до 2.0.1, содержащая проблему «iconv». Кроме того, я тестировал ваше решение в PHP 5.3.6 в MAMP 2.0.1, и он не работает. Единственное решение – откат к 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 (2.0.2, выпущенное 17 августа 2011 г.) разрешает проблему iconv . Да!