Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: iconv() на сервере не пашет
 
 автор: Anwor   (02.08.2008 в 04:37)   письмо автору
 
 

Всем доброго,

у меня проблема наклюнулась такого плана.. стал очень активно использовать Аякс, но как известно, чтобы по-нормальному перекидываться пользовательскими строковыми данными с Аяксом, надо произвести ряд энкодерско-декодерских действий. В частности, для обработки пришедших через $_POST данных на Аякс, пользуюсь функцией iconv().

На локальном сервере, с родными настройками php.ini, всё порхает без проблем.
Проблемы начинаются, как только выкладываю проект на реальный сервер. Хостинг у меня купленный, работаю с большим количеством доменов, и с помощью phpinfo() я обнаружил, что на них на всех функция iconv() стоит в режиме disabled.

Какие пути решения проблемы?
1) Первое что приходит на ум, это найти замену iconv(), менее привиредливую в плане настроек..... пошарился по форуму, понял что альтернатив ей нормальных вроде как нет... я не ошибаюсь?
2) Попробовать изменить одну из директив php.ini при помощи средств Апаче (htaccess). Вот только в душе не знаю, какая именно директива php.ini отвечает за iconv()...... если подскажете, буду очень признателен!
3) Самая крайняя и позорная мера, к которой очень бы не хотелось прибегать - это обратиться к администратору сервера с просьбой подключить директиву. Но в плане универсализма эта идея мне совсем не нравится...

Пожалуйста, подскажите как лучше поступить..
Заранее благодарен.

  Ответить  
 
 автор: sp10   (02.08.2008 в 10:30)   письмо автору
 
   для: Anwor   (02.08.2008 в 04:37)
 

В начале скрипта:
iconv_set_encoding('internal_encoding','UTF-8');

http://www.php.net/manual/en/function.iconv-set-encoding.php

  Ответить  
 
 автор: waptanet   (02.08.2008 в 11:46)   письмо автору
 
   для: Anwor   (02.08.2008 в 04:37)
 

disable_functions = iconv ... если в phpinfo вы видите именно это, то помоему к администратору сервера вам всёже придётся обратится ...

> понял что альтернатив ей нормальных вроде как нет... я не ошибаюсь? ..

ошибаетесь,я вообще например iconv не пользуюсь,а предпочитаю mbstring ...

  Ответить  
 
 автор: Anwor   (02.08.2008 в 12:54)   письмо автору
 
   для: waptanet   (02.08.2008 в 11:46)
 

2 waptanet:
Да да, именно disable_functions фигурирует в phpinfo(). Откровенно говоря, не очень хорошо понимаю мотивов возможной блокировки этой функции... Очень не хотелось бы быть так жестко увязанным на дурацкой директиве php.ini, от чего сайт не сможет быть просто и безболезненно перенесен на реальный сервер. Подскажите, пожалуйста, каков принцип использования mbstring, и выигрышен ли он в этом отношении (имею в виду потенциальное отключение функции на серверах)?
На всякий случай приведу кусочек своего скрипта, и что я добиваюсь этим с помощью iconv():

<?php
//данные пересылаются через XmlHttpRequest,
//на стороне джаваскрипта как известно все конвертится в utf-8
//на принимающем серверном скрипте перед обработкой массива POST
//применяю такую обработку:
foreach($_POST as $k=>$value) {
    
$_POST[$k]=iconv('UTF-8','windows-1251',urldecode($value));    
}
//в противном случае все кириллические строки выводятся в виде
//ѕСвР....
?>

Каков аналог этого действия может быть с использованием mbstring?

2 sp10:
> В начале скрипта:
> iconv_set_encoding('internal_encoding','UTF-8');
Я хотел бы попробовать все возможные варианты, конечно, но имеет ли вообще смысл пытаться пользоваться iconv-оподобными функциями при том условии, что сам iconv отключен в disable_functions?

  Ответить  
 
 автор: Anwor   (03.08.2008 в 16:14)   письмо автору
 
   для: Anwor   (02.08.2008 в 12:54)
 

up плизззз! очень волнует решение этого вопроса! =(

  Ответить  
 
 автор: sim5   (03.08.2008 в 16:42)   письмо автору
 
   для: Anwor   (03.08.2008 в 16:14)
 

Даже и не знаю, какой директивой можно запретить использование iconv, если только не указать явно функцию в disable_functions. А работа с мультибайтными строками, требует наличия и подключения расширения php_mbstring.dll. Если вы сами не имете возможности подключения расширений, то к хостеру в любом случае.

  Ответить  
 
 автор: Anwor   (03.08.2008 в 18:15)   письмо автору
 
   для: sim5   (03.08.2008 в 16:42)
 

мммм.. понятно.. Спасибо за разъяснение. Хотя оно меня и не радует.. Тогда вопрос в принципе последний: кто-нибудь может помочь со статистикой, насколько часто вообще может встречаться такой случай, когда отключают эту функцию, что указывать в саппортинговой документации к проектам, использующим iconv()? Чем потенциально может грозить серверу включение этой функции? Хотел бы заправиться информацией, чтобы побеседовать с хостером уже будучи "подкованным" в вопросе...

  Ответить  
 
 автор: sim5   (03.08.2008 в 18:45)   письмо автору
 
   для: Anwor   (03.08.2008 в 18:15)
 

Да чем она может грозить, ничем. Чем вызвано ее отключение у вас, не знаю, единственно, если это как раз тот случай как сказано в ТУ на РНР :)
"Функция iconv() на некоторых системах работает не так хорошо, как можно ожидать. В этом случае вы должны установить библиотеку libiconv."

  Ответить  
 
 автор: Anwor   (03.08.2008 в 22:59)   письмо автору
 
   для: sim5   (03.08.2008 в 18:45)
 

Исчерпывающе.
Буду общаться с хостинг-провайдером.
Большое спасибо всем, уделившим внимание вопросу!

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования