好的,所以我有一个很好的php服务器运行,使用我写的这个小函数打开了AF_UNIX socet。这被称为像这样PHP socket_connect()权限被拒绝
$IPC_connector = socket_create_IPC('/tmp/connection');
function socket_create_IPC($FILE)
{
#Create a AF_UNIX socket
if(!($socket = socket_create(AF_UNIX, SOCK_STREAM, 0)))
{
$errorcode = socket_last_error();
$errormsg = socket_strerror($errorcode);
die("Couldn't create socket: [$errorcode] $errormsg \n");
}
#Bind
if(!socket_bind($socket, $FILE))
{
$errorcode = socket_last_error();
$errormsg = socket_strerror($errorcode);
die("Could not bind socket : [$errorcode] $errormsg \n");
}
if(socket_listen($socket) === false)
{
die("socket_listen() failed: reason: " . socket_strerror(socket_last_error($socket)) . "\n");
}
socket_set_nonblock($socket);
return $socket;
}
然后我写了连接到该服务器这样
if(!($IPC = socket_create(AF_UNIX, SOCK_STREAM, 0)))
{
$errorcode = socket_last_error();
$errormsg = socket_strerror($errorcode);
die("Error:Couldn't create socket - [$errorcode] $errormsg \n");
}
echo "socket_create(): ".socket_strerror(socket_last_error($IPC))."\n";
if(!(socket_connect($IPC, '/tmp/connection')))
echo "socket_connect() failed, reason: ".socket_strerror(socket_last_error($IPC))."\n";
客户端客户实际得到的从网页中的AJAX请求中,它应该连接到被叫服务器,获取一些数据,然后将该数据返回到网页。 ajax请求是在javascript中进行的。 我测试了没有AJAX请求的客户端/服务器连接,它的工作原理是,但只要我通过网页尝试使用AJAX,客户端返回“socket_connect()失败,原因:权限被拒绝”剧本。也许我错过了一些小小的疏忽?我认为Ajax通过httpd(apache)被调用。我相信这可能是某种类型的文件许可的事情,但我无法弄清楚究竟是什么导致了它。
事情我已经试过这样远,
确信safe_mode设置为关闭在php.ini, 试图 “setsebool -P httpd_can_network_connect的” 企图阻挠SELinux的, 也试过 “setenforce 0”这也没有什么区别。 我试图将/ tmp和所有子目录的文件权限更改为777无济于事。 我跑出来的想法和想,也许有人以前见过这个问题, 我也看了这个,这是我的服务器创建文件 - >
[[email protected] tmp]# ls -lZa connection
srwxr-xr-x. root root unconfined_u:object_r:user_tmp_t:s0 connection
如果有人感兴趣的AJAX打电话给我用
function communication (IP, MechanismID, CommandName) {
$.post('php/connectDisconnect.php', {
IP : IP,
MechanismID : MechanismID,
CommandName : CommandName
},
function(data) {
if(data.search("Error") != -1)
alert(data);
});
}
其中connectDisconnect.php是上面的客户端。
目前没有时间阅读完整的Q,但首先想到的是同一起源限制。 (我会稍后删除,如果我走了。) – TecBrat
@TecBrat - 我看了一下“同源政策”,但我不太确定它适用于此,我可能是非常错误的,但它似乎该政策是从网上其他地方获取数据。我的问题是连接在同一台服务器上运行的两个php脚本? - 打开这个让我回答,但我很感谢你。 –
就像我刚才说的,我早点冲过去,没有读完整个问题,但我很高兴它能让你得到一个很好的答案。 – TecBrat