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

Undefined функция mysql_connect()

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

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

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

4b9b3361

Ответ 1

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

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

<?php
    phpinfo();
?>

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

extension=php_mysql.dll

Ответ 2

Я вижу, что вы пометили это 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()

Ответ 3

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

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

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

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

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

Ответ 4

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

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

Ответ 5

Я также застрял с той же проблемой неопределенного 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.

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

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

Если вы apt-get install php7.0-mysql старый php, вам нужно apt-get install php7.0-mysql

Ответ 6

Try:

<?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

Ответ 7

В файле php.ini

измените это значение

;extension=php_mysql.dll

в

extension=php_mysql.dll

Ответ 8

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

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

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

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

Ответ 9

Вопрос помечен тегом 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

Ответ 10

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

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

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

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

В Googled это, но не смог найти простой ответ, который сказал, где искать и что менять.

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

Ответ 11

(Конфигурация Windows MySQL)

Шаг 1: Перейдите в Панель управления Apache> Apache> Config> PHP.ini

Шаг 2: Поиск в блокноте (Ctrl + F) для ;extension_dir = "" (можно прокомментировать с помощью ;). Замените эту строку на: extension_dir = "C:\php\ext" (пожалуйста, не нужно удалять ; в начале предложения).

Шаг 3: Найдите: extension=php_mysql.dll и удалите ; в начале.

Шаг 4. Сохраните и перезапустите сервер Apache HTTP. (В Windows это обычно делается через пользовательский интерфейс)

Это :)

Если вы получаете сообщения об отсутствии php_mysql.dll вам, вероятно, потребуется загрузить этот файл либо с сайта php.net, либо с pecl.php.net. (Пожалуйста, будьте уверены, откуда вы это взяли)

Подробнее о PHP: Установка расширений в Windows - Руководство

Ответ 12

Если вы получаете ошибку как

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

Просим войти в cPanel Нажмите "Выбрать версию Php выберите расширение MYSQL

Ответ 13

Должна быть некоторая синтаксическая ошибка. Скопируйте/вставьте этот код и посмотрите, работает ли он:

<?php
    $link = mysql_connect('localhost', 'root', '');
    if (!$link) {
        die('Could not connect:' . mysql_error());
    }
    echo 'Connected successfully';
    ?

У меня было такое же сообщение об ошибке. Оказывается, я использовал функцию msql_connect() вместо mysql_connect().