【发布时间】:2014-05-03 20:19:38
【问题描述】:
我尝试在我的 Mac 上配置 Wordpress。我使用带有 MySQL 的 Apache 服务器,通过 MacPorts 安装。
所以,从 phpMyAdmin,我创建了一个带有“hellowp”数据库的“hellowp”用户。我可以使用该用户正确登录,并且可以访问 hellop 数据库。
但是当我在 wp-config.php 或 Wordpress 配置 GUI 中设置这些参数时,Wordpress 无法登录数据库。
我启用了调试,这是我得到的错误:
Warning: mysqli_real_connect(): (HY000/2002): No such file or directory in /private/var/www/hellowp/wp-includes/wp-db.php on line 1342
Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in /private/var/www/hellowp/wp-includes/wp-db.php on line 1372
Warning: mysql_connect(): No such file or directory in /private/var/www/hellowp/wp-includes/wp-db.php on line 1372
我的 PHP 版本是 5.5.10。我将此服务器用于许多项目,其中一些在 Drupal 上运行,我对它们没有任何问题。
我也尝试在 Wordpress 中以 MySQL root 用户身份登录,但错误仍然相同。
编辑 1: 我尝试从 MySQL Workbench 和 SURPRISE 登录我的服务器,在 127.0.0.1 找不到服务器...奇怪的是 phpMyAdmin 仍在工作,其他项目和Drupal 使用数据库没有任何问题。我将对此进行调查,也许是防火墙问题。有消息时会更新。
编辑 2: 好的,所以我检查了你们中的许多人所说的话,是的,你们中的许多人是对的:来自 PHP 的 MySQL 连接仅在使用 PDO 时才有效(我在所有我的项目和 Drupal 做的)。 mysql_connect 和 mysqli_connect 正在触发错误。 但事实是我不会重写 Wordpress,我使用的是最新版本。所以我会尝试找到一个解决方案,让 mysql_connect 和 mysqli_connect 在我的 PHP 配置上工作。
**编辑 3:解决方案:** 几个月前我安装了 Percona 服务器(一个 MySQL 分支)来替换 mysql 服务器。在此安装过程中,在我的 php.ini 中,我仅为 PDO 设置了套接字,而不为 mysqli 和 mysql 设置了套接字。所以,我必须在我的 php.ini 中为所有 mysql 扩展设置套接字。这是那些行:
pdo_mysql.default_socket="/opt/local/var/run/percona/mysqld.sock"
mysql.default_socket = "/opt/local/var/run/percona/mysqld.sock"
mysqli.default_socket = "/opt/local/var/run/percona/mysqld.sock"
【问题讨论】:
-
解决方法在报错信息中;它已被弃用/删除。使用
mysqli_connect()加,不能混用这两个API -
它会在这些错误消息中为您提供原因。
-
@Fred-ii-,这是错误的。
mysql_connect在 5.5 中已弃用,但未删除。 @maxime,请检查/private/var/www/hellowp/wp-includes/wp-db.php路径。错误是No such file or directory。 -
你很可能是对的。然而,我已经看到了一些服务器上运行 OP 的情况,
mysql_*函数确实被删除了。 @NaeelMaqsudov 所以,我在这个上 50% 正确;-) -
这里是 wp-db.php 的第 1371 到 1375 行。我没有看到任何包含或文件:
if ( WP_DEBUG ) { $this->dbh = mysql_connect( $this->dbhost, $this->dbuser, $this->dbpassword, $new_link, $client_flags ); } else { $this->dbh = @mysql_connect( $this->dbhost, $this->dbuser, $this->dbpassword, $new_link, $client_flags ); }
标签: php mysql wordpress macos apache