0

在 Apache2 虚拟主机中,我使用 RMode stat 让 mod_ruid2 正常工作。我添加了 RDocumentChRoot 以将进程 chroot 到网站文件夹,一个不需要的副作用是 PHP 无法连接到 MySQL 数据库。我用谷歌搜索帮助,找不到任何东西。

谁能给我一些绳子?

4

2 回答 2

1

感谢 Mario 提到“mysql socket thingy”。经过一番搜索,我发现 MySQLD 使用一个名为 mysqld.sock 的文件作为接收连接的可选方式。在您的系统上运行 'locate *.sock' 将显示 .sock 文件。dkim-filter 也使用 .sock 文件。根据我阅读的另一个网站,套接字文件是由应用程序创建的 FIFO 文件,它们只是充当重定向管道,允许应用程序相互通信,而无需通过其他套接字配置内容。

在我询问的情况下,chrooted php 进程无法访问 .sock 文件,因为它在 chroot 之外。幸运的是,我推断 PHP 使用 .sock 文件是因为连接变量。在 WordPress 中,默认配置使用“localhost”。PHP 中的“localhost”规范将导致 PHP 查找 .sock 文件而不是进行网络连接。将“localhost”更改为“127.0.0.1”可以优雅地解决问题。不需要硬链接或其他解决方法。

于 2012-12-25T02:41:25.543 回答
0

我在这个 PHP 错误中添加了一条评论,您可能会发现它很有用。

就我阅读 PHP 源代码而言,不可能从运行时更改行为。您必须修改源以使其通过 TCP 工作。

如果有人认为我错了,请告诉我们如何从运行时配置中绕过此行为:D

于 2014-04-16T17:03:24.553 回答