Вызов функции undefined mysql_connect
Я только что установил PHP и Apache на своем домашнем ПК. Когда я пытаюсь вызвать функцию mysql_connect
, я получаю:
fatal error: call to undefined function mysql_connect.
Я загрузил php.ini, где у меня есть нескомментированные строки extension=php_mysql.dll
и
extension=php_mysqli.dll
и изменить каталог расширений на extension_dir = "C:\php\ext"
- это каталог, где находятся файлы php_mysql.dll и php_mysqli.dll. Как я могу исправить эту проблему?
Вывод phpinfo():
http://jsfiddle.net/MMTwA/
Ответы
Ответ 1
После просмотра вашего вывода phpinfo()
появляется расширение mysql, которое не загружается. Я подозреваю, что вы можете редактировать неправильный файл php.ini(может быть несколько копий). Убедитесь, что вы редактируете php файл в C:\php\php.ini (также проверьте, нет ли второй копии в C:\Windows).
Кроме того, вы должны проверить свои журналы Apache на наличие ошибок (должно быть в каталоге\logs\в вашей установке Apache.
Если вы не читали ниже, я бы взглянул на раздел комментариев, потому что кажется, что многие люди испытывают причуды с настройкой этого. Несколько комментаторов предлагают решения, которые они использовали, чтобы заставить его работать.
http://php.net/manual/en/install.windows.extensions.php
Другим распространенным решением является копирование libmysql.dll и php_mysql.dll из c:\PHP в C:\Windows\System32.
Ответ 2
Справочная информация о моей (аналогичной) проблеме:
Мне было предложено исправить проект PHP, в котором использовались короткие теги. Мой сервер WAMP PHP.ini имел short_open_tag = off
.
Чтобы запустить проект в первый раз, я изменил эту настройку на short_open_tag = off
.
ПРОБЛЕМА Поверхность:
Сразу после этого изменения все мои вызовы mysql_connect() завершились неудачно. Он сделал ошибку
фатальная ошибка: вызов функции undefined mysql_connect.
Решение:
Просто установите short_open_tag = off
.
Ответ 3
Мой компьютер работает под управлением Windows 7 (Apache 2.2 и PHP 5.2.17 и MySQL 5.0.51a), синтаксис в файле "httpd.conf" (C:\Program Files (x86)\Apache Software Foundation\Apache2. 2\conf\httpd.conf) был чувствителен к косе.
Вы можете проверить, читается ли "php.ini" из правильного каталога. Просто введите ваш браузер "localhost/index.php". Код index.php следующий:
<?php
echo phpinfo();
?>
Существует строка (недалеко от верхней части), называемая "Загруженный файл конфигурации". Таким образом, если ничего не добавлено, проблема может заключаться в том, что ваш "php.ini" не читается, даже вы без комментирования (расширение = php_mysql.dll и extension = php_mysqli.dll). Итак, чтобы сделать это, я сделал следующий шаг. Мне нужно было изменить
PHPIniDir 'c:\PHP\'
к
PHPIniDir 'c:\PHP'
Обратите внимание, что последняя косая черта нарушала все!
Теперь строка "Загруженный файл конфигурации" получает "C:\PHP\php.ini" после обновления "localhost/index.php" (до того, как я перезапустил Apache2.2), а также блок mysql. MySQL и PHP работают вместе!
Ответ 4
Возможно, вы забыли перезапустить apache/wamp/xamp/любой веб-сервер, который вы используете, вам нужно сделать это, чтобы заставить его работать
Ответ 5
Проверьте ваш php.ini, я использую Apache2.2 + php 5.3. и у меня была та же проблема, и после изменения php.ini, чтобы установить каталог библиотек PHP, он работал правильно. Проблема заключается в настройке по умолчанию extension_dir
.
Значение по умолчанию (и WRONG) для моей рабочей среды
; extension_dir="ext"
без какого-либо полного пути и прокомментировал точку с запятой.
Есть два решения, которые отлично работали для меня.
1.- Включая эту строку в файл php.ini
extension_dir="X:/[PathToYourPHPDirectory]/ext
Где X: это установка буквы вашего диска (обычно C: или D:)
2.- Вы можете попытаться просто раскомментировать, удалив точку с запятой. Включить следующую строку в файл php.ini
extension_dir="ext"
Оба способа отлично работали для меня, но выбирали ваши. Не забудьте перезапустить Apache, прежде чем повторять попытку.
Надеюсь, это поможет вам.
Ответ 6
Привет, я получил эту ошибку, потому что я оставил амперсанд (&) в
; php.ini
error_reporting = E_ALL & ~E_DEPRECATED
Ответ 7
Убедитесь, что вы отредактировали папку php.ini в /php, я потерял весь день, чтобы обнаружить ошибку, и, наконец, я обнаружил, что я редактировал php.ini в неправильном месте.
Ответ 8
Однажды у меня возникла проблема при использовании Off
вместо Off
. И еще раз проверьте подушки... Путь должен быть точным. Также добавьте следующую строку в свою переменную окружения.
C:\your-apache-path\bin; C:\your-php-path\bin;C:\your-mysql-path\bin
Если вы находитесь в Windows, щелкните правой кнопкой мыши Мой компьютер, выберите свойства и перейдите на вкладку "Дополнительно"... (это Windows 7). Сначала нажмите "Дополнительные системные настройки", затем выберите вкладку "Дополнительно", а затем "Окружающая среда". Выберите PATH и нажмите "Изменить". Создайте копию строки в TXT файле для резервного копирования (может быть пустым) --- установите свои переменные среды... Выйдите из системы и зайдите в систему.
Ответ 9
После изменения нашего php.ini не забудьте перезапустить веб-сервер Apache.
Ответ 10
Просто для справки в будущем, копирование всех этих файлов расширения в Windows/System или Windows/System32 не требуется.
Все, что требуется, это копия файла php.ini, который вы редактируете в директории PHP, чтобы скопировать в корневой каталог Windows.
phpinfo будет ясно объяснять ниже:
Файл конфигурации (php.ini) Путь C:\Windows
Логический смысл объяснит, что php хочет загрузить конфигурацию, расположенную в директории Windows.: -)
Ответ 11
Так как mysql_connect Это расширение было устарело в PHP 5.5.0, и оно было удалено в PHP 7.0.0. Вместо этого следует использовать расширение MySQLi или PDO_MySQL.
по умолчанию xampp не загружает его автоматически
в файле php.ini вы должны раскомментировать
;; extension=php_mysql.dll
to
extension=php_mysql.dll
Затем перезапустите ваш apache, вы должны быть в порядке
Ответ 12
Эта же проблема заставила меня с ума (Windows 10, Apache 2.4, MySql 5.7). По какой-то причине (вероятно, связанной с PATH), DLL не будет загружаться после раскомментации правильных расширений dll и extension_dir = "ext" в php.ini. Попробовав множество вещей, я просто изменил "ext", чтобы использовать полный путь к каталогу. Например. extension_dir = "c:/phpinstall/ext", и он сработал.
Ответ 13
Я думаю, что вы должны использовать mysqli_connect вместо mysql_connect