Подтвердить что ты не робот

PHP/Apache: PHP Неустранимая ошибка: вызов функции undefined mysql_connect()

У меня есть MySQL (5.5.23 Community Server), Apache (2.2) и PHP (5.3.13), работающий на компьютере Fedora 15 (64-разрядный). Каждый работает без проблем самостоятельно.

Я думал, что PHP настроен/скомпилирован для работы с MySQL, но когда я пытаюсь загрузить любую веб-страницу PHP, которая вызывает вызов MySQL, я получаю вышеупомянутую фатальную ошибку (в журнале ошибок Apache). PHP работает нормально, но через Apache и в командной строке.

Когда я запускаю php -i из командной строки, достаточно уверен, что он отображает все биты и части MySQL, но когда я загружаю страницу, отображающую phpinfo(), то не упомянуты модули MySQL.

Я также пробовал комментировать "extension = mysql.so" в php.ini, но PHP жалуется на "PHP Startup: не удается загрузить динамическую библиотеку '/usr/lib64/php/modules/mysql.so'." (даже если модуль там находится). Но тогда я не совсем уверен, нужна ли эта строка для того, чтобы ее не прокомментировали или нет. [Коррекция: ошибка была указана из-за опечатки, но запуск из командной строки показывает, что модуль уже загружен в любом случае - там это предупреждение от PHP, которое так говорит.]

Я также отключил SELinux; многократно останавливал/перезапускал Apache; yummed MySQL-Devel, если это имеет значение; и, кажется, все другие возможные вещи.

Если я запустил небольшой PHP-тест script из командной строки, чтобы получить доступ к базе данных MySQL, то он работает без проблем, поэтому PHP знает о MySQL, но когда он работает под Apache, он, похоже, не имеет понятия что MySQL даже существует.

Я пытаюсь в течение нескольких месяцев пытаться решить эту проблему и, кажется, все пробовал, но ничего не работает.

Я не против переустанавливать PHP, если мне действительно нужно, если кто-то может продемонстрировать правильный способ настройки/компиляции с поддержкой MySQL, чтобы я мог заставить его работать под Apache, хотя в идеале я ' d просто предпочитают работать с существующей установкой.

Большое спасибо за любую помощь!

4b9b3361

Ответ 1

В случае, если кому-либо это грозит, это случай, когда PHP не имеет доступа к клиентским библиотекам mysql. Наличие сервера MySQL в системе не является правильным исправлением. Исправить для ubuntu (и PHP 5):

sudo apt-get install php5-mysql

После установки клиента веб-сервер необходимо перезапустить. Если вы используете apache, то должно работать следующее:

sudo service apache2 restart

Ответ 2

Имейте в виду, что с PHP 5.5.0 функция mysql_connect() устарела, и она полностью удалена в PHP 7

Дополнительную информацию можно найти в документации php:

Цитата:

Внимание
Это расширение было устарело в PHP 5.5.0, и оно было удалено в PHP 7.0.0. Вместо этого следует использовать расширение MySQLi или PDO_MySQL. См. Также MySQL: выбирая руководство по API и связанные с ним FAQ для получения дополнительной информации. Альтернативы этой функции включают:
* mysqli_connect()
* PDO:: __ construct()

Ответ 3

У меня была такая же проблема, и мне пришлось обратиться к php manual, в котором говорилось, что mysql и mysqli extensions требуют загрузки libmysql.dll. Я искал его под C:\windows\system32 (windows 7) и не смог найти, поэтому я загрузил его здесь и поместил его в свой C:\Windows\system32. Я перезапустил Apache, и все сработало нормально. Принял меня 3 дня, чтобы понять, надеюсь, что это поможет.

Ответ 4

PHP-версия модуля Apache может по какой-то нечетной причине не собирать файл php.ini в качестве версии CLI, я бы предложил неплохо посмотреть на:

  • Любые различия в файлах .ini, которые отличаются от php -i и phpinfo() через веб-страницу *
  • Если нет различий, то для просмотра разрешений файлов mysql.so и .ini, но я думаю, что Apache анализирует их как пользователя root

Чтобы быть действительно понятным здесь, не ищите файлы php.ini в файловой системе, посмотрите, что говорит PHP, что он смотрит на

Ответ 5

Как Бут

sudo yum install php-mysql

или

sudo apt-get install php5-mysql

Ответ 6

Я получил подобное сообщение об ошибке. Думаю, я случайно набрал "9o" при начале первой строки файла php.ini. Как только я удалил это, я больше не получил сообщения о "фатальной ошибке". Надеюсь, это поможет.

Ответ 7

Deamon mysql должен работать.

Если не попробовать это:

#/etc/init.d/mysql start

Или это:

#service mysqld start

И если вы хотите добавить mysql при загрузке:

# chkconfig --add mysqld
# chkconfig -- level 235 mysqld on

Если да, и он все еще не работает, попробуйте это:

Раскомментируйте следующие строки в /etc/php/php.ini

extension=mysqli.so
extension=mysql.so

И проверьте свой пост выше '/usr/lib64/php/modules/msql.so'. Он должен быть mysql.so (если он ошибочно игнорирует его...)