好的,所以我有一個很好的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