Вызов неопределенной функции mysql_connect - PullRequest
21 голосов
/ 18 декабря 2011

Я только что установил 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/

Ответы [ 13 ]

15 голосов
/ 18 декабря 2011

После просмотра вашего вывода 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.

4 голосов
/ 28 декабря 2011

Справочная информация о моей (похожей) проблеме:

Меня попросили исправить проект PHP, в котором использовались короткие теги.PHP.ini моего WAMP-сервера имел short_open_tag = off.Чтобы запустить проект в первый раз, я изменил этот параметр на short_open_tag = off.

ПРОБЛЕМА Поверхность: сразу после этого изменения все мои вызовы mysql_connect () завершились неудачно.Он выдал ошибку

фатальная ошибка: вызов неопределенной функции mysql_connect.

Решение: просто установите short_open_tag = off.

3 голосов
/ 18 сентября 2013

Мой компьютер работает под управлением 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» не читается, даже если вы не прокомментировали (extension = 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 работают вместе!

2 голосов
/ 05 октября 2014

Проверьте ваш php.ini, я использую Apache2.2 + php 5.3. и у меня была та же проблема, и после изменения php.ini для установки каталога библиотек PHP он работал правильно. Проблема заключается в значении конфигурации extension_dir по умолчанию.

Значение по умолчанию (и НЕПРАВИЛЬНО) для моей рабочей среды:

; extension_dir="ext"

без полного пути и с точкой с запятой.

Есть два решения, которые отлично сработали для меня.

1.- Включение этой строки в файл php.ini

extension_dir="X:/[PathToYourPHPDirectory]/ext

Где X: ваша буква диска (обычно C: или D:)

2.- Можно попробовать просто раскомментировать, удалив точку с запятой. Включить следующую строку в файл php.ini

extension_dir="ext"

Оба способа работали хорошо для меня, но выбирайте свой. Не забудьте перезапустить Apache перед повторной попыткой.

Надеюсь, это поможет вам.

2 голосов
/ 18 декабря 2011

Вы, вероятно, забыли перезапустить apache / wamp / xamp / любой веб-сервер, который вы используете, вам нужно сделать это, чтобы он заработал

1 голос
/ 14 июля 2015

Убедитесь, что вы редактировали php.ini в папке / php, я потерял весь день, чтобы обнаружить ошибку, и, наконец, обнаружил, что отредактировал php.ini в неправильном месте.

1 голос
/ 14 июля 2013

Привет, я получил эту ошибку, потому что я пропустил амперсанд (&) в

; php.ini
error_reporting = E_ALL & ~E_DEPRECATED
0 голосов
/ 15 января 2017

Эта же проблема сводила меня с ума (Windows 10, Apache 2.4, MySql 5.7). По некоторым причинам (вероятно, связанным с PATH) .dll не будут загружаться после раскомментирования правильных расширенных библиотек и extension_dir = "ext" в php.ini. Попробовав множество вещей, я просто изменил «ext», чтобы использовать полный путь к каталогу. Например. extension_dir = "c: / phpinstall / ext", и это сработало.

0 голосов
/ 12 июня 2016

Я думаю, что вы должны использовать mysqli_connect вместо mysql_connect

0 голосов
/ 08 марта 2016

Начиная с mysql_connect Это расширение устарело в PHP 5.5.0 и удалено в PHP 7.0.0. Вместо этого следует использовать расширение MySQLi или PDO_MySQL. по умолчанию xampp не загружает его автоматически

в вашем файле php.ini вы должны раскомментировать

;; extension=php_mysql.dll

до

extension=php_mysql.dll

Тогда перезапусти свой apache у тебя все будет хорошо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...