PHP / Apache: PHP Неустранимая ошибка: вызов неопределенной функции 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 из командной строки, чтобы получить доступ к базе данных MySQL, тогда он работает без проблем, поэтому PHP знает о MySQL, но когда он работает под Apache, похоже, нет никакой информации о том, что MySQL даже существует.

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

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

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

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

 sudo apt-get install php5-mysql 

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

 sudo service apache2 restart 

Имейте в виду, что с 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 ()

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

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

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

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

Как насчет

sudo yum install php-mysql

или

sudo apt-get install php5-mysql

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

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 (если это неправильно, игнорируйте его …)