lighttpd php5 socket_connect() 权限被拒绝

lighttpd php5 socket_connect() permission denied

我正在尝试连接到 linux 机器上 php 中的 unix 套接字。它是一个微控制器,所以我决定使用 lighttpd 来启动服务器 运行。我在连接到另一个应用程序正在侦听的套接字时遇到问题。

in 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,因此 none 与 apache 相关的答案也可以工作,因为没有 apache。

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

php5 正在使用 fastcgi 如果这很重要

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

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