我在 VMware 中安装了最小的 OpenBSD 5.7 amd64,其中安装了匹配版本的 PHP 和 PHP-FPM,以及 nginx 和 mariadb pkg_add
。我配置了所有服务,并让 nginx 通过 PHP-FPM 解析 HTML,一切都很正常,直到我尝试连接到 MariaDB。它没有连接到 MySQL/MariaDB。我尝试了三种不同的 PHP CMS,使用正确的凭据,每个都出现以下错误:
警告:mysql_connect():无法通过套接字连接到本地 MySQL 服务器 警告:mysql_connect():无法通过套接字连接到本地 MySQL 服务器 /var/run/mysql/mysql.sock (62 "Too many levels of symbolic links") in /htdocs/index.php on line 5
这是做完这些之后
mkdir -p /var/www/var/run/
ln -s /var/run/mysql /var/www/var/run/mysql
这里到底出了什么问题?我尝试了四个不同的教程,但就是无法让 PHP 和 MySQL 协同工作。尽管我确定 MySQL 正在运行,而且我可以mysql -p -u ...
正常连接到服务器。
请帮忙。
编辑:
# ls -al /var/run/mysql /var/www/var/run/mysql
lrwxr-xr-x 1 root daemon 14 May 5 11:07 /var/www/var/run/mysql -> /var/run/mysql
/var/run/mysql:
total 8
drwx--x--x 2 _mysql _mysql 512 May 5 11:01 .
drwxr-xr-x 4 root wheel 512 May 5 11:06 ..
srwxrwxrwx 1 _mysql _mysql 0 May 5 11:01 mysql.sock
#
答案1
您/var/www/var/run/mysql
指向/var/run/mysql
。根据目录结构,我推测您正在将 apache/php chrooting 到/var/www
。它可能是 OpenBSD 的默认设置。
当 chrooted 进入时,/var/www
您的链接实际上变成了/var/run/mysql -> /var/run/mysql
,这几乎是无限循环。
您要么需要在该 chroot 内部提供套接字,使用socket
配置选项,要么使用 TCP 连接。
编辑:顺便说一句,如果您不习惯使用 OpenBSD,您可能不应该将其用于生产。您可能不会比使用您熟悉的系统/发行版更安全。
答案2
我遇到了类似的问题。执行 时netstat -an |grep 3306
,它会返回
tcp6 0 0 *.3306 *.* LISTEN
在 php 脚本中将 localhost 设置为“::1”可以“解决”这个问题。这似乎很奇怪,但可能对你来说是一个提示。