Много уже обсуждалось, но все же |
Хостинг timeweb. Сервер Linux 2.6 x86_64 Parser работает (судя по _test.html).
Локальный libmysqlclient.so выдает ошибку:
driver failed to initialize client library 'libmysqlclient.so', /usr/lib/libmysqlclient.so: wrong ELF class: ELFCLASS64
Копирую свой libmysqlclient.so, выдает ошибку:
Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (13)
Подскажите, в какую сторону двигаться? |
А какая у вас строка подключения? |
mysql://user:password@localhost/database |
Парсер с драйвером 64-битные? |
32-битный для RedHat. 64 возвращает 500 ошибку |
Поставьте 64-битный, запустите из консоли на сервере и покажите сообщение... |
| ... Или посмотрите в логе веб-сервера причину 500 ошибки. |
Premature end of script headers: .../cgi-bin/parser3.cgi |
Что в консоли? |
К сожалению, не знаю как это сделать |
Лучше изучить... |
| ... но как вариант поставить 32-битную версию, узнать у хостера путь к сокету и задать его в строке подключения - в документации описано как это сделать. |
По поводу подключения к сокету хостер мне ответил: Подключайтесь не к сокету, а по адресу сервера, в Ваше случае localhost. |
Тут есть тонкий момент... |
Если для стандартной libmysqlclient указать в качестве адреса сервера localhost, то подключение все равно пойдет через сокет, что и подтверждается сообщением «вашей» библиотеки. И тут либо хостер не в курсе этого, либо у них более сложная конфигурация хостинга (какой-нибудь прокси, нестандартная либа и т.п.).
В этой ситуации лучше всего собрать Парсер и драйвер прямо на сервере из исходников — скорее всего это сразу снимет все проблемы. Но для этого нужен ssh-доступ и минимальные навыки работы с консолью юникса (что просто необходимо знать любому веб-разработчику).
Но можно попробовать указать вместо localhost адрес 127.0.0.1, что должно указать библиотеке, что надо использовать tcp-соединение с сервером. |
Если я правильно понял:
/usr/lib/gcc/x86_64-pc-linux-gnu/4.1.2/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by ./parser3.cgi) |
Использование вместо localhost 127.0.0.1 выдает ошибку:
Access denied for user 'alcon_mobi'@'127.0.0.1' (using password: YES) |
И что на это говорит хостер? |
Решился собрать парсер. Сам парсер собрал, а вот mysql драйвер никак:
make[1]: Entering directory `/home/a/alcon/parser_compile/parser3mysql/libltdl'
make[2]: Entering directory `/home/a/alcon/parser_compile/parser3mysql/libltdl'
/bin/sh ./../mkinstalldirs /usr/local/lib
/bin/sh ./../mkinstalldirs /usr/local/include
mkdir -p -- /usr/local/include
mkdir: cannot create directory `/usr/local/include': Permission denied
make[2]: *** [install-includeHEADERS] Error 1
make[2]: Leaving directory `/home/a/alcon/parser_compile/parser3mysql/libltdl'
make[1]: *** [install-am] Error 2
make[1]: Leaving directory `/home/a/alcon/parser_compile/parser3mysql/libltdl'
make: *** [install-recursive] Error 1 Подскажите, или ткните носом :) |
Все уже собралось. |
| Судя по всему, в .libs уже лежит требуемая libparser3mysql.so. А что install не проходит, так не надо make install говорить. :) |
Путь к сокету |
Можно посмотреть так (если он конечно в /var/)
strings <путь к библиотеке mysql хостера>libmysqlclient.so |grep "/var/"
ну или
strings <путь к библиотеке mysql хостера>libmysqlclient.so |grep "sock",
но в таком вариантов несколько лишних строк будет. |
Правильно |
| А можно еще результат ldd ./parser3.cgi и uname -a? Вообще ошибка выглядит странно, как-будто у хостера библиотека libstdc++.so.6 несовместима с установленной у него же glibc. |
64-х битные платформы |
| Note: Есть особенность сборки на 64-х битных платформах - и парсер, и библиотеку sql надо собирать --with-dynamic-stdcpp. В первом случае это откомментировать строку в buildall-with-xml, во втором передать параметром в configure. |
У нас такое было, это вопросы у хостера. Что то с правами вашего пользователя, ему не дают динамически подключить вашу библиотеку
P.S. может и не совсем технически сказал, но суть такова. Долюайте хостера |