Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Apach2 mod_ruid2和RDocumentChRoot——Can';t连接到MySQL数据库_Php_Mysql_Database_Apache2_Chroot - Fatal编程技术网

Php Apach2 mod_ruid2和RDocumentChRoot——Can';t连接到MySQL数据库

Php Apach2 mod_ruid2和RDocumentChRoot——Can';t连接到MySQL数据库,php,mysql,database,apache2,chroot,Php,Mysql,Database,Apache2,Chroot,在Apache2 virtualhost中,我使用RMode stat让mod_ruid2按照我想要的方式工作。我将RDocumentChRoot添加到chroot,将该过程添加到网站文件夹,一个不必要的副作用是PHP无法连接到MySQL数据库。我在谷歌上寻求帮助,但什么也找不到 有人能给我扔点绳子吗?谢谢马里奥提到“mysql socket thingy”。在四处搜索之后,我发现MySQLD使用一个名为MySQLD.sock的文件作为接收连接的可选方式。在系统上运行“locate*.sock”

在Apache2 virtualhost中,我使用RMode stat让mod_ruid2按照我想要的方式工作。我将RDocumentChRoot添加到chroot,将该过程添加到网站文件夹,一个不必要的副作用是PHP无法连接到MySQL数据库。我在谷歌上寻求帮助,但什么也找不到


有人能给我扔点绳子吗?

谢谢马里奥提到“mysql socket thingy”。在四处搜索之后,我发现MySQLD使用一个名为MySQLD.sock的文件作为接收连接的可选方式。在系统上运行“locate*.sock”将显示.sock文件。dkim筛选器还使用.sock文件。根据我读到的另一个网站,套接字文件是由应用程序创建的FIFO文件,它们只是充当重定向管道,允许应用程序相互通信,而无需通过其他套接字配置

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

我添加了一条评论,您可能会在其中发现有用之处

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


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

详细说明您的设置。实际指令和路径布局概述可能会使这成为一个可回答的问题。PS:找出mysql socket thingy住在哪里。“PS:找出mysql socket thingy住在哪里”哈哈,我就像那句话听起来一样不知所措。LOL我知道Linux设备被视为文件系统的一部分。套接字的处理方式是否相同?为了完整地回答我关于套接字的问题,我非常确定“真正的套接字”不会被视为常规文件,但mysqld和其他一些应用程序有时会创建“套接字文件”(通常以*.sock的形式),这些文件只是重定向到真正套接字的管道。