it-swarm.com.ru

Неопределенная функция mysql_connect ()

Я запустил aptitude install php5-mysql (и перезапустил MySQL/Apache 2), но я все еще получаю эту ошибку:

Неустранимая ошибка: вызов неопределенной функции mysql_connect () в /home/validate.php в строке 21 

phpinfo() говорит, что файл /etc/php5/Apache2/conf.d/pdo_mysql.ini был проанализирован.

50
user1765369

Ну, это твой шанс! Похоже, PDO готово; используйте это вместо этого.

Попробуйте проверить, загружается ли модуль расширения MySQL PHP:

<?php
    phpinfo();
?>

Если его там нет, добавьте следующее в файл php.ini:

extension=php_mysql.dll
41
wanovak

Я вижу, что вы пометили это Ubuntu. Скорее всего, драйвер MySQL (и, возможно, MySQL) не установлен. Предполагая, что у вас есть SSH или терминальный доступ и разрешения Sudo, войдите на сервер и запустите это:

Sudo apt-get install mysql-server mysql-client php5-mysql

Если пакеты MySQL или пакет php5-mysql уже установлены, они обновятся.


ОБНОВЛЕНИЕ

Так как этот ответ все еще получает случайный щелчок, я собираюсь обновить его, чтобы включить PHP 7. PHP 7 требуется другой пакет для MySQL, поэтому вы можете использовать другой аргумент для команды apt-get.

Sudo apt-get install mysql-server mysql-common php7.0 php7.0-mysql

И, что важно, mysql_connect() устарела с PHP v5.5.0. Обратитесь к официальной документации здесь: PHP: mysql_connect ()

47
Sarcastron

Если кто-то пришел сюда с проблемой официальные изображения docker php , введите следующую команду внутри контейнера докера.

$ docker-php-ext-install mysql mysqli pdo pdo_mysql

Для получения дополнительной информации, пожалуйста, обратитесь к ссылке выше раздела How to install more PHP extensions (но это немного сложно для меня ...).

Или этот документ может вам помочь.

https://docs.docker.com/samples/library/php/

30
kujiy

В случае, если вы уже используете PHP7, ранее устаревшие функции mysql_* были полностью удалены, поэтому вы должны обновить свой код, используя вместо этого функции PDO или mysqli_*.

Если это невозможно, в качестве временного решения я создал небольшой включаемый файл PHP, в котором воссоздаются старые функции mysql_* с функциями mysqli_*()-: fix_mysql.inc.php

27
rubo77

Я также застрял с той же проблемой неопределенного MySQL_connect (). Я пытался внести изменения в файл PHP.ini, но он выдавал ту же ошибку . Затем я пришел к этому решению, где я изменил свой код с устаревшего php функции для новых функций.

$con=mysqli_connect($Host,$user,$password);

mysqli_select_db($con,dbname); 
//To select the database

session_start(); //To start the session

$query=mysqli_query($con,your query); 
//made query after establishing connection with database.

Я надеюсь, что это поможет вам ... Это решение правильно работает для меня.

7
apurva sharma

Пытаться:

<?php
  phpinfo();
?>

Запустите страницу и найдите mysql. Если не найдено, запустите следующую команду в командной консоли и перезапустите сервер Apache:

Sudo apt-get install mysql-server mysql-client php5-mysql

Также убедитесь, что все следующие строки не закомментированы где-то в вашем файле Apache2.conf (или в вашем файле conf.d/php.ini), из

;extension=php_mysql.so

в

extension=php_mysql.so
5
fortune

Я предполагаю, что ваша PHP установка не была скомпилирована с поддержкой MySQL. 

Проверьте вашу команду настройки (php -i | grep mysql). Вы должны увидеть что-то вроде '--with-mysql=shared,/usr'.

Вы можете проверить подробные инструкции на http://php.net/manual/en/mysql.installation.php . Хотя я бы предпочел использовать решение, предложенное @wanovak.

Тем не менее, я думаю, что вам нужна поддержка MySQL для использования PDO.

4
Muc

В файле php.ini

Правка это 

;extension=php_mysql.dll

в

extension=php_mysql.dll
4
Dominic Amal Joe F

Вопрос помечен ubuntu, но решение отмены комментирования extension=mysqli.dll характерно для окон. Я запутался здесь?! В любом случае первым делом запустите <? php phpinfo ?> и найдите mysql* под заголовком Configuration. Если вы не видите, это означает, что вы не установили или не включили php-mysql. Итак, сначала установите php-mysql 

Sudo apt get install php-mysql

Эта команда установит php-mysql в зависимости от уже установленной php, так что не беспокойтесь о версии !!.

Затем следует решение, специфичное для Unix, в файле php.ini откомментируйте строку

extension=msql.so

убедитесь, что msql.so присутствует в /usr/lib/php/<timestamp_folder>, ELSE

extension=path/to/msql.so

Затем, наконец, перезапустите службы Apache и mysql, и вы должны увидеть раздел mysql в разделе Configrations в phpinfo page

1
Dota2

Я получал эту ошибку, потому что проект, над которым я работал, был разработан на php 5.6, и после установки проект не смог работать на php7.1.

Просто для тех, кто использует Vagrant с ubuntu/nginx, в каталоге nginx (/ etc/nginx /) есть каталог с именем sites-available, в котором содержится файл с именем, аналогичным URL-адресу, настроенному для vagrant maschine. В моем случае был Homestead.app. В этом файле есть строка, которая говорит что-то вроде 

    fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;

Там вы можете изменить версию php на желаемую для этого конкретного сайта.

Погуглил, но так и не смог найти простой ответ, в котором говорилось, где искать и что менять.

Надеюсь, что это кому-нибудь поможет. Спасибо.

0
freifede