gpt4 book ai didi

php - lighttpd php5 socket_connect() 权限被拒绝

转载 作者:太空宇宙 更新时间:2023-11-04 12:57:49 25 4
gpt4 key购买 nike

我正在尝试在 Linux 机器上连接到 PHP 中的 Unix 套接字。它是一个微 Controller ,所以我决定使用 lighttpd 来启动和运行服务器。我在连接到另一个应用程序正在监听的套接字时遇到问题。

在 PHP 中,我使用 socket_create() 创建一个套接字,将 AF_UNIX 作为第一个参数传递,然后我尝试使用 socket_connect() 连接到套接字,这会出现权限被拒绝的错误,这是我使用 socket_last_error() 发现的。

另一个应用程序正在监听新连接的套接字,我可以通过套接字与另一个应用程序连接到它,但我在 php 中获得的权限被拒绝。

代码如下所示:

$socket = socket_create(AF_UNIX, SOCK_STREAM, 0) or die("Could not create socket\n");
$result = socket_connect($socket, $sockaddr);
echo socket_last_error();

lighttpd 在用户“www-data”下运行,该用户位于 sudo、adm 和 www-data 组中。

说实话,即使在谷歌上搜索了很多次,我也不知道从这里去哪里。

没有 selinux,所以提到使用 setsebool 的答案将不起作用,因为没有 setsebool 命令

lighttpd 不使用 apache,所以与 apache 相关的答案都不会起作用,因为没有 apache。

我如何授予 lighttpd 或 php5 连接到套接字的权限?

如果重要的话,php5 正在使用 fastcgi

最佳答案

它在访问/tmp/socketname 时遇到权限问题。我发现可行的解决方法是让 php 在创建套接字之前对文件执行 chmod 命令:

$sockaddr = "/tmp/socketname";
$command = "sudo chmod go+w ".$sockaddr;
exec($command);

关于php - lighttpd php5 socket_connect() 权限被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35132992/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com