2016-12-31 5 views
2

Я вручную настроил сервер Wamp на Windows7 с помощью Apache 2.4.23, PHP 5.6.29 и MYSQL Server 5.5. Каждый раз, когда я пытаюсь подключиться к MySQL, я получаю ошибку:Невозможно подключиться к MySQL с помощью PHP на Windows7

fatal error: call to undefined function mysql_connect

Я попробовал следующее StackOverflow решение, но я не мог найти libmysql.dll в C: \ PHP, ни копирование php_mysql.dll из C: \ PHP в C: \ Windows \ System32 был плодотворным: Call to undefined function mysql_connect

Выход моего phpinfo(): https://jsfiddle.net/ad0gd90y/

Я также рассматривал ошибку файл журнала в Apache:

Installing Apache HTTP Server 2.x with 
DomainName = example.com 
ServerName = www.example.com 
ServerAdmin = [email protected] 
ServerPort = 80 
ServerSslPort = 443 
ServerRoot = c:/Apache24 
Rewrote docs/conf/extra/httpd-autoindex.conf.in 
to c:/Apache24/conf/original/extra/httpd-autoindex.conf 
Rewrote docs/conf/extra/httpd-default.conf.in 
to c:/Apache24/conf/original/extra/httpd-default.conf 
Rewrote docs/conf/extra/httpd-ssl.conf.in 
to c:/Apache24/conf/original/extra/httpd-ssl.conf 
Rewrote docs/conf/extra/httpd-multilang-errordoc.conf.in 
to c:/Apache24/conf/original/extra/httpd-multilang-errordoc.conf 
Rewrote docs/conf/extra/httpd-info.conf.in 
to c:/Apache24/conf/original/extra/httpd-info.conf 
Rewrote docs/conf/extra/httpd-userdir.conf.in 
to c:/Apache24/conf/original/extra/httpd-userdir.conf 
Rewrote docs/conf/extra/httpd-mpm.conf.in 
to c:/Apache24/conf/original/extra/httpd-mpm.conf 
Rewrote docs/conf/httpd.conf.in 
to c:/Apache24/conf/original/httpd.conf 
Rewrote docs/conf/extra/proxy-html.conf.in 
to c:/Apache24/conf/original/extra/proxy-html.conf 
Rewrote docs/conf/extra/httpd-vhosts.conf.in 
to c:/Apache24/conf/original/extra/httpd-vhosts.conf 
Rewrote docs/conf/extra/httpd-dav.conf.in 
to c:/Apache24/conf/original/extra/httpd-dav.conf 
Rewrote docs/conf/extra/httpd-languages.conf.in 
to c:/Apache24/conf/original/extra/httpd-languages.conf 
Rewrote docs/conf/extra/httpd-manual.conf.in 
to c:/Apache24/conf/original/extra/httpd-manual.conf 
Duplicated c:/Apache24/conf/original/extra/httpd-autoindex.conf 
to c:/Apache24/conf/extra/httpd-autoindex.conf 
Duplicated c:/Apache24/conf/original/extra/httpd-default.conf 
to c:/Apache24/conf/extra/httpd-default.conf 
Duplicated c:/Apache24/conf/original/extra/httpd-ssl.conf 
to c:/Apache24/conf/extra/httpd-ssl.conf 
Duplicated c:/Apache24/conf/original/extra/httpd-multilang-errordoc.conf 
to c:/Apache24/conf/extra/httpd-multilang-errordoc.conf 
Duplicated c:/Apache24/conf/original/extra/httpd-info.conf 
to c:/Apache24/conf/extra/httpd-info.conf 
Duplicated c:/Apache24/conf/original/extra/httpd-userdir.conf 
to c:/Apache24/conf/extra/httpd-userdir.conf 
Duplicated c:/Apache24/conf/original/extra/httpd-mpm.conf 
to c:/Apache24/conf/extra/httpd-mpm.conf 
Duplicated c:/Apache24/conf/original/httpd.conf 
to c:/Apache24/conf/httpd.conf 
Duplicated c:/Apache24/conf/original/magic 
to c:/Apache24/conf/magic 
Duplicated c:/Apache24/conf/original/charset.conv 
to c:/Apache24/conf/charset.conv 
Duplicated c:/Apache24/conf/original/extra/proxy-html.conf 
to c:/Apache24/conf/extra/proxy-html.conf 
Duplicated c:/Apache24/conf/original/extra/httpd-vhosts.conf 
to c:/Apache24/conf/extra/httpd-vhosts.conf 
Duplicated c:/Apache24/conf/original/extra/httpd-dav.conf 
to c:/Apache24/conf/extra/httpd-dav.conf 
Duplicated c:/Apache24/conf/original/mime.types 
to c:/Apache24/conf/mime.types 
Duplicated c:/Apache24/conf/original/extra/httpd-languages.conf 
to c:/Apache24/conf/extra/httpd-languages.conf 
Duplicated c:/Apache24/conf/original/extra/httpd-manual.conf 
to c:/Apache24/conf/extra/httpd-manual.conf 

Я совершенно беспомощен, как решить эту проблему. Также для чего используется libmysql.dll? Есть ли какой-либо установочный заказ, чтобы все было в порядке (я установил apache, а затем php и mysql)? Заранее спасибо!

+0

Возможный дубликат [Неустранимая ошибка: вызов неопределенной функции mysql \ _connect()] (http: // stackoverflow.com/questions/10615436/fatal-error-call-to-undefined-function-mysql-connect) – Dez

+0

Вы пытались использовать mysqli_ для соединения/запроса? Вы не публиковали какой-либо код php/mysql, поэтому это сложнее сказать. –

+0

Я попробую скоро mysqli_ версию моего кода. Все, что я попробовал простой скрипт подключения, используя mysql_connect («$ host», «$ username», «$ password»), за которым следует mysql_select_db («$ db_name»), который отлично работает на моей старой машине XP, где я развернул wamp-сервер с PHP 5.2.5 – rosemary

ответ

1

Скорее всего, вы копируете код с более старого сайта на более новую версию PHP. Код mysql_connect устарел в PHP 5.5 и удален в PHP 7.0. Вы также должны убедиться, что PHP был скомпилирован с поддержкой MySQL.

Решение 1: Проверка поддержки MySQL

Detecting mysql support in php

Используйте ссылку выше, чтобы определить PHP был скомпилирован ли с помощью поддержки MySQL. Если это не так, то перейдите и заново установите PHP или WAMP с надлежащей поддержкой (PDO и MySQL).

Решение 2: Понизить PHP

Если проблема связана с mysql_connect и связанных с ними mysql_ функции устарела, вы можете изменить PHP версии в установке WAMP на что-то раньше, чем 7.0, регулируя версию он использует в настройках на панели инструментов. Обратите внимание, что для версий от 5.5 до 7.0 вы, вероятно, будете получать устаревшие предупреждения о функциях в вашем журнале ошибок и, возможно, на выходе вашего кода, в зависимости от того, какие ошибки вы показываете (которые можно настроить в php.ini).

enter image description here

Решение 3: Фикс Ваш код

Независимо от вышесказанного, лучшим решением будет обновить PHP код так, чтобы он не использует устаревшую mysql_connect, mysql_query и других связанных с наследием mysql. В зависимости от размера вашего кода это может быть короткий или длительный процесс. Однако важно подумать об этом, потому что у более старых функций mysql есть несколько уязвимостей безопасности, таких как SQL-инъекция, и ваш сайт может быть уязвим для взлома атак, если вы не потратите время на обновление кода.

+0

* «что-то раньше 7.0» * - Версия PHP OP 5.6.29 –

+0

Хорошо, тогда вы, вероятно, все еще получаете предупреждение о том, что mysql_connect устарел. Попробуйте версию до 5.5 (если вы собираетесь с решением 1, а безопасность не представляет большой угрозы). – LStarky

+0

На странице phpinfo() он ничего не показывает о MySQL и даже MySQLi. Все, что он показывает, это «mysqlnd». Это означает, что не будет работать mysqli, т. Е. Эта версия PHP не поддерживает это? @LStarky – rosemary