LINUX.ORG.RU

PHP под CentOS 5.5 не подключается к БД MySQL 5.0.77


0

1

В меня на WEB-сурвере под RedHAT 9 из сайта реализован доступ к БД MySQL посредством PHP-сценариев. Все работало ОК. Перешел на CentOS-5.6-x86_64 и начались проблемы при обращении к БД. Т.е. обращении к БД, но на екран ничего не выводится и ошибок не выдает. Подскажите пожалуйста в чем тут дело. Может связано с переходом на другие версии PHP и MySQL? Буду очень благодарен за совет.


<?php
error_reporting(E_ALL);
do_smth_withdb();
?>
anonymous
()

возможно путь до mysql socket`а изменился.

qbbr ★★★★★
()
Ответ на: комментарий от malev

Проверьте в Центоси версии и архитектуры пакетов php-mysql и mysql-libs. посмотрите вывод
ldd /usr/lib64/php/modules/mysql.so | grep sql
ldd /usr/lib64/php/modules/mysqli.so | grep sql
Убедитесь, что показанная в выводе по пути библиотека существует.

Не исключено, что php или mysql был установлен со стороннего репозитория, и теперь mod_php.so по тихой грусти сегфолтится, ничего не выводя в логи.

Slavaz ★★★★★
()
Ответ на: комментарий от Slavaz

Вот результаты действий выполненных по Вашему совету:

ldd /usr/lib64/php/modules/mysql.so | grep sql

libmysqlclient.so.15 => /usr/lib64/mysql/libmysqlclient.so.15 (0x00002b78403e9000)

ldd /usr/lib64/php/modules/mysqli.so | grep sql

libmysqlclient.so.15 => /usr/lib64/mysql/libmysqlclient.so.15 (0x00002b1f897a0000)

malev
() автор топика
Ответ на: комментарий от malev

> Проверьте в Центоси версии и архитектуры пакетов php-mysql и mysql-libs.

покажите, какие версии пакетов используются.
Попробуйте обновить их до последних версий из репозитория.

Slavaz ★★★★★
()
Ответ на: комментарий от malev

попробуйте написать простенький php-скрипт, использующий mysql. например, этот скрипт только подключается к mysql, пробует выбрать количество записей в некой таблице (SELECT count(*) FROM xxx )и выводит это количество на экран.
Затем поставьте пакет php-cli и выполните этот тестовый скрипт из комстроки

php -q my_test.php

посмотрите, что выводится.

Slavaz ★★★★★
()
Ответ на: комментарий от Slavaz

Вы своими установками мне помогли и я пришел к выводу, что нет библитеки с функциями PHP. Вот вое что выдается после запуска

php -q my_test.php

PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/modules/ldap.so' - /usr/lib/php/modules/ldap.so: cannot open shared object file: No such file or directory in Unknown on line 0 PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/modules/mysql.so' - /usr/lib/php/modules/mysql.so: cannot open shared object file: No such file or directory in Unknown on line 0 PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/modules/mysqli.so' - /usr/lib/php/modules/mysqli.so: cannot open shared object file: No such file or directory in Unknown on line 0 PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/modules/odbc.so' - /usr/lib/php/modules/odbc.so: cannot open shared object file: No such file or directory in Unknown on line 0 PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/modules/pdo_mysql.so' - /usr/lib/php/modules/pdo_mysql.so: cannot open shared object file: No such file or directory in Unknown on line 0 PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/modules/pdo_odbc.so' - /usr/lib/php/modules/pdo_odbc.so: cannot open shared object file: No such file or directory in Unknown on line 0 PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/modules/pdo_pgsql.so' - /usr/lib/php/modules/pdo_pgsql.so: cannot open shared object file: No such file or directory in Unknown on line 0 PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/modules/pgsql.so' - /usr/lib/php/modules/pgsql.so: cannot open shared object file: No such file or directory in Unknown on line 0

PHP Fatal error: Call to undefined function mysqli_connect() in /var/www/html/cnii/bd/poisk.php on line 24

malev
() автор топика
Ответ на: комментарий от malev

Очевидно, вам таки надо доставить пакеты типа php-mysql.

dark_lord
()
Ответ на: комментарий от dark_lord

> Selinux. Выставь httpd_can_network_connect_db --> on.
Это нужно только если происходит обращение не через именованную пайпу. В большинстве случаев работает и так :)

Slavaz ★★★★★
()
Ответ на: комментарий от dark_lord

Загуглил

setsebool -P httpd_can_network_connect_db on

Но не помогло. Спасибо.

malev
() автор топика
Ответ на: комментарий от Slavaz

Так и есть, я поставил CentOS-5.6-x86_64, а раньше работал с i386. Я деисталировал php-mysql и задал

yum install -y php-mysql.i386 php-mysqli.i386

Но при установке начало ціклить:

Loaded plugins: fastestmirror, protectbase, tmprepo Existing lock /var/run/yum.pid: another copy is running as pid 19445. Another app is currently holding the yum lock; waiting for it to exit... The other application is: pirut Memory : 79 M RSS (434 MB VSZ) Started: Thu Jun 2 16:09:34 2011 - 07:51 ago State : Sleeping, pid: 19445 Another app is currently holding the yum lock; waiting for it to exit... The other application is: pirut Memory : 79 M RSS (434 MB VSZ) Started: Thu Jun 2 16:09:34 2011 - 07:53 ago State : Sleeping, pid: 19445 Another app is currently holding the yum lock; waiting for it to exit... The other application is: pirut Memory : 79 M RSS (434 MB VSZ) Started: Thu Jun 2 16:09:34 2011 - 07:55 ago State : Sleeping, pid: 19445

malev
() автор топика
Ответ на: комментарий от Slavaz

Открыл БД все-таки, но на запрос $number=mysql_num_rows($query);

не срабатывает. в httpd error.log пишет: supplied argument is not a valid MySQL result resource in /var/www/html/cnii/bd/poisk.php on line 25

line 25 и есть $number=mysql_num_rows($query); Вот PHP-код ----------------- <? $hostname=«cntei.com»; $username=«webuser»; $password=""; $dbName=«cnti»; mysql_connect($hostname, $username, $password) or die («не можу створити з'єднання !»); mysql_select_db($dbName) or die («не можу вибрати базу даних!»); $query=mysql_query(«select * FROM region_info»); $number=mysql_num_rows($query); $i=0; ?>

malev
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.