좋아, PHP를 실행하는 좋은 서버가있어서이 작은 함수를 사용하여 AF_UNIX 소켓을 열었습니다. 그래서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 요청에서 호출 서버에서 데이터를 가져온 다음 해당 데이터를 다시 웹 페이지로 반환하십시오. 아약스 요청은 javascript로 이루어집니다. AJAX 요청없이 클라이언트/서버 연결을 테스트 한 결과이 작동하지만 웹 페이지를 통해 AJAX를 시도하자마자 클라이언트는 "socket_connect() failed, reason : Permission denied"라는 echo 문을 반환합니다. 스크립트. 아마 내가 놓친 작은 감시가있을거야? 나는 Ajax가 httpd (apache)를 통해 호출되고 있다고 가정한다. 나는 그것이 아마 어떤 형태의 파일 허가 일 것이라고 확신하지만, 그 원인을 정확하게 파악할 수는 없다.
것들 내가 지금까지 따라서 시도했습니다
제작해야합니다 safe_mode가이 는 SELinux를 사용 방해하려고 시도 "에 setsebool -P httpd_can_network_connect"시도는 php.ini에서 벗어났다, 는 "위해 setenforce 0"시도 아무런 차이도 없었습니다. /tmp 및 모든 하위 디렉토리의 파일 사용 권한을 777로 변경해 보았습니다. 누군가가 AJAX에 관심이>
[[email protected] tmp]# ls -lZa connection
srwxr-xr-x. root root unconfined_u:object_r:user_tmp_t:s0 connection
경우 - 내가 아이디어의 부족 어쩌면 누군가가 전에이 문제를 보았다고 생각하고있어, 나는 또한 나의 서버가 생성되는 파일 인이 바라 보았다 이 전화를 사용하십시오.
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