ICONV.SO в PHP

Major

Новичок
ICONV.SO в PHP

Доброе время суток господа. Столкнулся с такой вот неприятностью. Появился у меня свой выделенный сервер под FreeBSD. Все не плохо. Apache, php и прочие радости установлены. Но вот стал переносить проект со старого хостинга на новый сервер и первым делом получил ошибку


Fatal error: Call to undefined function: iconv() in /home/***/domains/****.ru/public_html/wpu_core.php on line 458

Тему понял не дурак. Стал разбираться. Нашел php.ini. Раскомментировал строку

;extension=php_iconv.dll

и заменил на

extension=iconv.so

Перезапустил апач командой apachectl restart. Ноль эмоций. Ошибка как и была так и осталась. Так в чем же дело? В директории где лежит php.ini нашел файл libiconv.so. Решил заменить в конфиге строку на extension=libiconv.so. Снова рестартил апач. А ошибка как была так и осталась. Так что же на самом деле надо такого магического совершить, чтобы подключить iconv к php. Неужели брать в руки шаманский бубен и пытаться вызвать великого Джа, дабы он помог своей магической силой? Очень надеюсь на вас, уважаемые профи. Выручайте молодого начинающего кодера.

-~{}~ 06.03.07 04:57:

На заметку. Там еще нашел libiconv.a и libiconv.so.3
Попытки подключить их дают тот же результат, тобишь нулевой. Может я не там подключаю или вообще рестартить надо как-то сам php а не apach? Хотя понимаю что последняя моя мысль глупость.
 

hermit_refined

Отшельник
могу предложить:
1. посмотреть в лог апача (при extension=iconv.so, разумеется).
2. попробовать запустить iconv в командной строке.
3. посмотреть phpinfo - на наличие расширения и на configure command.

P.S. libiconv.so - это библиотека. но наверняка уже iconv у вас есть (только в расчете на что собирался модуль - пока неизвестно).
P.P.S. на этих vds php обычно очень криво собран. потому я бы советовал собирать самому.
 

boombick

boombick.org
1. Пересобрать php с поддержкой iconv
2. Аналогом линуксового iconv во FreeBSD является libiconv. Следовательно в скриптах надо вызывать libiconv($from, $to, $subj);
3. В этом форуме это оффтопик =)
 

boombick

boombick.org
ааа...
пехепе 5.0.4 - админ отличается консерватизмом... Пардон за темноту, думал, что это особенность именно FreeBSD, а не PHP, запущенном под ней...
Публично извиняюсь, был не прав =)
 

hermit_refined

Отшельник
У меня PHP Version 4.4.5, а FreeBSD 6.1
и... это единственное, что вы посмотрели?..
кстати, в любом случае вам надо обновиться до 4.4.6, а лучше - 5.2.1 - коли уж вы там сами хозяйничаете.
пехепе 5.0.4 - админ отличается консерватизмом...
ну, это вообще древность.
насколько я помню, они там плутали между трех #define, пытались фиксить, но все равно при каких-то конфигурациях баг всплывал.
кардинально проблему решили где-то в 5.2.0.
 

Major

Новичок
Не ругайтесь на меня особо, уважаемый hermit_refined. Все когда-то были ламерами. Я учусь и у меня есть желание. Я пробовал некоторые из выше описанных методов. На данный момент решил пересобрать php, заодно сразу 5ку поставить.

-~{}~ 07.03.07 01:53:

Автор оригинала: hermit_refined
могу предложить:
1. посмотреть в лог апача (при extension=iconv.so, разумеется).
2. попробовать запустить iconv в командной строке.
3. посмотреть phpinfo - на наличие расширения и на configure command.

P.S. libiconv.so - это библиотека. но наверняка уже iconv у вас есть (только в расчете на что собирался модуль - пока неизвестно).
P.P.S. на этих vds php обычно очень криво собран. потому я бы советовал собирать самому.
2.
Запускал в командной строке. Есть такая штука и даже работает как ни странно.

# iconv --help
Usage: iconv [-c] [-s] [-f fromcode] [-t tocode] [file ...] or: iconv -l


3.
Configure Command './configure' '--with-apxs' '--with-curl' '--with-curl-dir=/usr/local/lib' '--with-gd' '--with-gd-dir=/usr/local' '--with-gettext' '--with-jpeg-dir=/usr/local/lib' '--with-kerberos' '--with-mcrypt' '--with-mhash' '--with-mysql=/usr/local/mysql' '--with-pear' '--with-png-dir=/usr/local/lib' '--with-xml' '--with-zlib' '--with-zlib-dir=/usr/local/lib' '--with-zip' '--with-openssl' '--enable-bcmath' '--enable-calendar' '--enable-ftp' '--enable-magic-quotes' '--enable-sockets' '--enable-track-vars' '--enable-mbstring' '--enable-memory-limit'

P.S. В расчетена что собирался iconv самне знаю.

P.P.S. на этих vds php обычно очень криво собран. Потому я сейчас буду пытаться собрать его сам. Если вы могли бы подкинуть еще советы по сборке, то я бы вообще был счаствлив.
 

hermit_refined

Отшельник
понятно, кроме 2 (в части - подключается ли iconv.so) и 1 (пишется ли ошибка при старте апача).
установка описана здесь - http://ru.php.net/manual/en/install.unix.php (и в начале толстых книжек по php).
также многие/некоторые любят собирать из портов.

по сути, единственный момент, когда там надо думать - это при запуске ./configure ...
 

Major

Новичок
Вообще, hermit_refined, спасибо за советы. Я все-таки сделал как ни странно то, что хотел, но... Меня смущает немного то, что получилось. Сначала я решил ставить php5 из портов. Но в итоге оказалось что моя версия индейца 1,3 просто на отказ отказывалась работать с ним, ругаясь при рестарте что пхп5 ее валит и что надо перекомпилировать сначала индейца. Далее я решил собрать пхп4 из портов,но вышла откровенно говоря какая-то фигня. Я не смог ее поключить к апачу ни через httpd.conf ни как-то подругому, хотя я при конфигурации выбирал что ставлю его как mod_php к апачу. В итоге остался последний вариант. И я его сделал. Я скачал сорцы с сайта пхп 4,4,6 и сконфигурировал с нужными параметрами, после чегои установил. Он установился, но меня ждал облом. Апач орал что оне не может рестариться из за того что не знает что за модуль SSLEngine там подключен и типа он ничего про него не знает. Меня эт ввело в тупик. Я закомментировал все строки начинающиеся с SSL... пока не перестал ругаться на то, что там ошибки. Потом он ругался на то, что он не знает директив php_admin_.... Я случайно зашел на сервер через DirectAdmin, ибо уже отчаялся и решил поискатьчто-тотам полезное. Не найдя ничего, что могло бы мне помоч, я решил сделать следующее. Я подумал, раз DirectAdmin пишет в файлы hhtpd.conf, то он по идее должен мне хотябы выдать ошибки чтоли, или что-то показать. Ведь мой конфиг считается битым, ибо сам apachectl ругался на него. В итоге, как я и писал с самого начала, я потанцевал с бубном, спел пару шамансиких песен и о чудо. Мой пхп заработал. У меня на сайте отобразился мой phpinfo() и показал что:

PHP Version 4.4.6

Configure Command './configure' '--with-iconv=/usr/local/lib' '--with-apxs' '--with-curl' '--with-curl-dir=/usr/local/lib' '--with-gd' '--with-gd-dir=/usr/local' '--with-gettext' '--with-jpeg-dir=/usr/local/lib' '--with-kerberos' '--with-mcrypt' '--with-mhash' '--with-mysql=/usr/local/mysql' '--with-pear' '--with-png-dir=/usr/local/lib' '--with-xml' '--with-zlib' '--with-zlib-dir=/usr/local/lib' '--with-zip' '--with-openssl' '--enable-bcmath' '--enable-calendar' '--enable-ftp' '--enable-magic-quotes' '--enable-sockets' '--enable-track-vars' '--enable-mbstring' '--enable-memory-limit'


Восторгу моему не было предела. Но остается вопрос. Каким образом были применены настройки и как же теперь быть. Ведь через консоль я до сих пор не могу сделать рестарт апача. Он говорит что httpd.conf не верный и с ошибками. Так в чем я не прав-то?
 

hermit_refined

Отшельник
судя по описанию ваших мытарств, вы не всегда верно интерпретировали реальность, и сдавались раньше времени ;-)
но то, что в итоге хоть что-то работает - это очень даже хорошо.
как правило, ручное конфигурирование и панель - не очень совместимы.
я не знаю, как устроен DirectAdmin - может быть все что угодно, своя версия конфига, с которой он запускает апач, ещё что-нибудь...
Ведь через консоль я до сих пор не могу сделать рестарт апача. Он говорит что httpd.conf не верный и с ошибками.
вот это очень интересно.
что именно он говорит?..
 

Major

Новичок
На данный момент воттакая вот фигня.

customer-4935# apachectl restart
/usr/sbin/apachectl restart: configuration broken, ignoring restart
/usr/sbin/apachectl restart: (run 'apachectl configtest' for details)

customer-4935# apachectl configtest
Syntax error on line 31 of /usr/local/directadmin/data/users/user1/httpd.conf:
Invalid command 'php_admin_flag', perhaps mis-spelled or defined by a module not included in the server configuration

Это сейчас так он показывает. А если расскоментировать строки с SSL тобудет вот так вот:

customer-4935# apachectl configtest
Syntax error on line 523 of /etc/httpd/conf/httpd.conf:
Invalid command 'SSLEngine', perhaps mis-spelled or defined by a module not included in the server configuration

...

Вот так и не понял я, нужен ли мне этот SSLEngine и как теперь быть. Я не могу сделать рестарт сервера, но он был перезапущен, а настройки применены. Выходит я и в правду шаман? :confused:

З.Ы.: Взламываю сайты и программы по фтографиям. Архивирую интернет на дискеты. Не дорого. Компьютерный шаман в 1м поколении.
 

Активист

Активист
Команда форума
Major
>Это сейчас так он показывает. А если расскоментировать строки с
>SSL тобудет вот так вот:

>customer-4935# apachectl configtest
>Syntax error on line 523 of /etc/httpd/conf/httpd.conf:
>Invalid command 'SSLEngine', perhaps mis-spelled or defined by a >module not included in the server configuration

Нужно запускать не через apachectrl, а через скрипты автозапуска
/usr/local/etc/rc.d/apache.sh start [restart|stop]
например...

[root@indns ~]# apachectl stop
/usr/local/sbin/apachectl stop: httpd stopped
[root@indns ~]# apachectl stop
/usr/local/sbin/apachectl stop: httpd (no pid file) not running
[root@indns ~]# apachectl start
Syntax error on line 2024 of /usr/local/etc/apache/httpd.conf:
Invalid command 'SSLEngine', perhaps mis-spelled or defined by a module not included in the server configuration
/usr/local/sbin/apachectl start: httpd could not be started
[root@indns ~]# /usr/local/etc/rc.d/apache.sh start
Starting apache.
 

lorien

Новичок
Далее я решил собрать пхп4 из портов,но вышла откровенно говоря какая-то фигня. Я не смог ее поключить к апачу ни через httpd.conf ни как-то подругому, хотя я при конфигурации выбирал что ставлю его как mod_php к апачу.
Что значит не смогли подключить?
Может быть, вы просто не добавили в конфиг строчку
AddType application/x-httpd-php .php?
Зря вы стали изобретать велосипед, лучше бы с портами разобрались.
А iconv, как и другие расширения ставится из порта /usr/ports/lang/php4-extensions/
 

Major

Новичок
Слушайте, господа. Я вам очень признателен и благодарен за оказанное содействие. Всем спасибо. Нашел я

/usr/local/etc/rc.d/apache.sh start [restart|stop]

и теперь через него делаю запуск и рестарт. И в правду работает )).

Вообще я поиском пользуюсь. Не думайте что я тут "пришел типа чтобы вы тут разжевали все мои траблы, а я просто тупо повторил что сказали". Я просто все время был вЫньдовозником. Для меня тяжело адаптироваться в юниксе, тем более считается что FreeBSD самая сложная ОС этого семейства. Я пользуюсь FreeBSD уже целых 5 дней. Я за эти 5 дней уже смог установить сам MC, настроить PROFTPD и вот собрать PHP. Я считаю для новичка, который о UNIX только слышал, это не плохо. Вообще мне понравилось. Я вдруг захотел стать еще 1м членом глобальной семьи UNIXоидов, а именно ветки FreeBSD. Я когда захожу в консоль, то меня охватывает какая-то радость. Это другой мир, это другая реальность. Я за эти 5 дней успел немного понять что это такое юникс и с чем его едят. Чем больше проблем я встречал и чем глубже я вних вникал, тем сильнее меня затягивало. Правда, я так рад что у меня появилась возможность изучить эту ОС. Я обратился к вам за помощью только потому что надо было срочно все это дело настроить. А так естественно я буду читать man и всякие умные книжки про FreeBSD и постигать эту не легкую ОС. И даже читая книги, всегда будут вопросы, которые могут помочь решить только гуру. Ведь надо помогать своим братьям младшим и наставлять на путь истинный )). Вообще тему считаю закрытой, так как на все вопросы были даны исчерпывающие ответы. Всем спасибо еще раз!
 
Сверху