php - Apache2 mod_ruid2 和 Document ChRoot — 无法连接到 MySQL 数据库

标签 php mysql database apache2 chroot

在 Apache2 虚拟主机中,我已经使用 RMode stat 让 mod_ruid2 按照我想要的方式工作。我添加了 RDocumentChRoot 以将进程 chroot 到网站文件夹,但一个不需要的副作用是 PHP 无法连接到 MySQL 数据库。我用 Google 搜索寻求帮助,但没有找到任何内容。

谁能给我一些绳子吗?

最佳答案

感谢 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”可以优雅地解决问题。不需要硬链接(hard link)或其他解决方法。

关于php - Apache2 mod_ruid2 和 Document ChRoot — 无法连接到 MySQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14026821/

相关文章:

mysql - 按日期从多表中获取数据

javascript - 如何在离线 Web 应用程序中存储 250mb 的数据库

database - 敏捷——数据库部署

Python pandas 字符串处理来自 SQL 数据库的分类数据

php - jquery优化ajax请求? PHP 和 JS

php - 群组消息传递的数据库设计

php - 如何从字符串中替换或删除 ndash 字符?

mysql - 'character set' 和 'default character set' 之间的区别

php - Magento 语法错误或访问冲突 1286 未知表引擎 'InnoDB'

sql - 选择最长的公共(public)时间范围