php: mysql_connect () не работает без сообщения об ошибке - PullRequest
1 голос
/ 19 февраля 2012

Я запускаю простой тестовый скрипт из командной строки на CentOS 5.6 с установленным пакетом PHP из PHP 5.3 на CentOS / RHEL 5.6 .

PHP работает нормально во всех других случаях, но когда я нажимаю mysql_connect(), он завершается неудачно без ошибок.

Если я бегу

$ php -m

Я не вижу MySQL в качестве установленного модуля.

Однако я добавил extension=mysql.so в свой php.ini и перезагрузился.

Вывод rpm -qa | grep php '

php-common-5.3.10-1.w5
php-5.3.10-1.w5
php-cli-5.3.10-1.w5

Вывод 'yum install php-mysql'

  --> Missing Dependency: php-common = 5.1.6-27.el5_7.5 is needed by package php-mysql-5.1.6-27.el5_7.5.x86_64 (updates)
php-pdo-5.1.6-27.el5_7.5.x86_64 from updates has depsolving problems
  --> Missing Dependency: php-common = 5.1.6-27.el5_7.5 is needed by package php-pdo-5.1.6-27.el5_7.5.x86_64 (updates)
Error: Missing Dependency: php-common = 5.1.6-27.el5_7.5 is needed by package php-pdo-5.1.6-27.el5_7.5.x86_64 (updates)
Error: Missing Dependency: php-common = 5.1.6-27.el5_7.5 is needed by package php-mysql-5.1.6-27.el5_7.5.x86_64 (updates)
 You could try using --skip-broken to work around the problem
 You could try running: package-cleanup --problems
                        package-cleanup --dupes
                        rpm -Va --nofiles --nodigest
The program package-cleanup is found in the yum-utils package.

Ответы [ 2 ]

6 голосов
/ 19 февраля 2012
 I am not seeing MySQL as an installed module.

Вы установили его?

# yum install php-mysql

(из того же репо, который вы установили php из).

РЕДАКТИРОВАТЬ:

запустить это:

yum --enablerepo=webtatic install php-mysql

это говорит yum получать пакеты из webtatic репозитория (в дополнение к репозиториям, настроенным системой).Если вы хотите использовать webtatic в репозиториях с включенной системой, запустите:

 yum --enablerepo=webtatic install  webtatic-release
0 голосов
/ 19 февраля 2012

Во-первых, несколько советов: прекратите использовать библиотеки mysql и используйте PDO или хотя бы библиотеки mysqli.

Теперь для справки по устранению неполадок: первый шаг должен быть на 100% уверен, что mysql загружается. Создайте сценарий (на основе веб-интерфейса) с:

phpinfo ();

Убедитесь, что где-то на этой странице есть блок, указывающий, что загружается расширение MySQL.

Везде, где вы тестируете, нет ошибок, прямо перед вызовом mysql_connect добавьте следующие строки:

ini_set('display_errors', 1);
ini_set('log_errors', 1); 
error_reporting(E_ALL | E_STRICT);

Это гарантирует, что вы не подавите ошибки где-то еще до подключения. Некоторые фреймворки иногда делают это.

Если модуль действительно загружается и с добавленным кодом регистрации ошибок вы все равно не получите действительную ошибку. Я бы попробовал подключиться через php скрипт командной строки. Посмотрите в файле php.ini, чтобы увидеть, что "error_log" установлен на. Это журнал по умолчанию, в который он будет записывать - иногда настройки на основе http отменяют ведение журнала, поэтому, даже если ошибки обнаружены, вы не видите или не можете их найти. Сценарий php командной строки учитывает это.

И последнее, но не менее важное: вы всегда можете опубликовать свою строку подключения в этом сообщении. Попробуйте подключиться из командной строки на сервере в качестве сценария, используя команду mysql с теми же учетными данными, что и ваш mysql_connect. Возможно, вы сможете подключиться просто отлично, но у вас будут неверные учетные данные.

Если модуль не загружается, попробуйте найти, где именно находится модуль, и укажите полный путь к php.ini. Иногда Yum устанавливает вещи не там, где их ищет php.ini. В конце установки Yum иногда указывается путь, если нет, чтобы найти его с помощью грубой силы, сделайте следующее:

cd /
find . -name 'mysql.so'

так в php.ini вместо

extension=mysql.so

1024 * ставить *

extension=/path/to/found/mysql.so

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...