OpenBSD Nginx/PHP/MariaDB/PHP-FPM 堆栈

OpenBSD Nginx/PHP/MariaDB/PHP-FPM 堆栈

我在 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”可以“解决”这个问题。这似乎很奇怪,但可能对你来说是一个提示。

相关内容