iconv() не работает

alexon

Новичок
iconv() не работает

Добрый день.

Выдает ошибку:
Fatal error: Call to undefined function iconv()

В phpinfo():
iconv support enabled
iconv implementation glibc
iconv library version 2.2.5

Скомпилировано, естественно, с --with-iconv

В чем может быть проблема?

Apache 2 + PHP 5.0.2
 

alexon

Новичок
array(11) { [0]=> string(8) "libiconv" [1]=> string(16) "ob_iconv_handler" [2]=> string(18) "iconv_get_encoding" [3]=> string(18) "iconv_set_encoding" [4]=> string(12) "iconv_strlen" [5]=> string(12) "iconv_substr" [6]=> string(12) "iconv_strpos" [7]=> string(13) "iconv_strrpos" [8]=> string(17) "iconv_mime_encode" [9]=> string(17) "iconv_mime_decode" [10]=> string(25) "iconv_mime_decode_headers" }

-~{}~ 29.09.04 10:45:

2.2.5 это откуда интересно версию она взяла. Я вроде бы ставил до этого 1.9.1 последняя на сайте.
 

tony2001

TeaM PHPClub
вот мне тоже интересно откуда там 2.2.5

-~{}~ 29.09.04 09:57:

а libiconv() функции нет?
 

alexon

Новичок
Забавно. Есть такая функция ис ней заработало. Спасибо.
Только теперь функция strtolower() не переводит в нижний регистр значение, которое возвращает liniconv() а оставляет таким каким было. Но это уже не так страшно, буду искать :о)
 

tony2001

TeaM PHPClub
alexon
видимо, где-то в хидерах glibc прописан макрос "iconv", который возвращает "libiconv".
в результате получается такой интересный результат.

по поводу strtolower() -> [m]setlocale[/m]
 

alexon

Новичок
Нашел в /usr/local/include/iconv.h прописано вроде как :о)

-~{}~ 29.09.04 11:26:

А setlocale(LC_ALL, 'ru-RU'); не помогло.
 

neko

tеam neko
кстати это пролетало уже как баг пхп правда под винды...
http://bugs.php.net/bug.php?id=26194
 

tony2001

TeaM PHPClub
alexon
ага, спасибо.
хм, посмотрю что можно сделать...

`locale -a | grep ru` выведет тебе все доступные русские локали.

-~{}~ 29.09.04 10:39:

попробуй-ка перенести строки 105-107 из ext/iconv/iconv.c:
Код:
#ifdef HAVE_LIBICONV
#define iconv libiconv
#endif
выше, еще до iconv_functions[].
должно помочь.
 

alexon

Новичок
ru_RU
ru_RU.koi8r
ru_RU.utf8
ru_UA
ru_UA.utf8
russian

Он в принципе русские символы не хочет переводить в нижний регистр, оставляет как есть. Iconv тут ни при чем. Странно. До этого стоял PHP 4.3.8 там все работало нормлаьно, все русские символы корректно переводились в нижний регистр.

-~{}~ 29.09.04 11:47:

А с iconv черт с ней, у меня в одной функции используется переправил на libiconv() и работает пусть.

-~{}~ 29.09.04 11:50:

о! поставил не ru_RU а russian заработало :о)))) Все, пробьлема решилась. Странно... перегрузить сервер надо, чет неладно это, ru_RU не понимает.
 

tony2001

TeaM PHPClub
alexon
>ru_RU.koi8r
вот и поставь её, если у тебя текст в koi.

>А с iconv черт с ней, у меня в одной функции используется переправил на libiconv() и работает пусть.
эээ нет, так просто ты не отделаешься =)
я такое повторить не могу, поэтому протестируй, плз, моё предложение.
 

alexon

Новичок
Перегрузил сервер теперь ru_RU заработало :о))
Нет у меня текст cp1251

Ладно сейчас попробую поэкспериментировать.

-~{}~ 29.09.04 12:00:

А в принципе чего экспериментировать. В строке 54 написано:
#ifdef HAVE_LIBICONV
#undef iconv
#endif

:о) Потому и не находит iconv()
 

tony2001

TeaM PHPClub
alexon
поставь себе локаль 1251, если в системе нет.
нет в дистрибутиве - поставь руками (как)

-~{}~ 29.09.04 11:06:

а, то есть все хуже.
у тебя стоят хидеры от libiconv, а используется на самом деле glibc-iconv.
запущенный случай, ничем не смогу помочь - у тебя проблемы с конфигурацией системы.
 
Сверху