我正在尝试连接到Linux机器上的php中的unix socket。它是一个微控制器,所以我决定使用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
答案 0 :(得分:0)
访问/ tmp / socketname时遇到权限问题。我的工作是找到工作是在创建套接字之前让php在文件上执行chmod命令:
$sockaddr = "/tmp/socketname";
$command = "sudo chmod go+w ".$sockaddr;
exec($command);