서버 설정 문제로 인해 fsockopen php 작업이 실패했고 로컬 호스트가 모니터링되지 않았습니다. 해결 방법은 서버 네트워크 환경을 재설정하는 것입니다.
이 문서의 운영 환경: Windows 7 시스템, PHP 버전 7.1, DELL G3 컴퓨터
구체적인 질문:
php fsockopen 로컬 오류? fsockopen PHP 작업 실패 문제를 해결하는 방법은 무엇입니까?
fsockopen을 사용하여 비동기 호출을 할 때 오류가 발생했습니다. 동일한 코드가 Alibaba Cloud centos 및 Tencent Cloud win2008에서는 문제를 일으키지 않았습니다.
호스트 주소를 127.0.0.1로 쓰세요. 그렇지 않으면 localhost가 나타납니다.
경고: fsockopen(): 대상 컴퓨터가 적극적으로 거부하기 때문에 연결할 수 없습니다. (10061)
host는 현재 서버 도메인 이름을 쓰고 다음과 같이 나타납니다.
경고: fsockopen(): 연결 당사자가 일정 시간 후에 올바르게 응답하지 않거나 연결된 호스트가 응답하지 않아 연결 시도가 실패했습니다. (10060)
현재 호스트 주소의 서버 인트라넷 IP는 192.168.3.3 이고 응답은 정상이며 오류가 없습니다.
게다가 서버가 다른 서버로 fsockopen을 하거나, 다른 서버가 fsockopen을 하려고 하는 경우에는 문제가 없어 정상적으로 전송이 가능합니다.
코드는 다음과 같습니다.
function async_post($host,$path,$data){ $post = http_build_query($data); $len = strlen($post); $fp = fsockopen( $host , 80, $errno, $errstr, 30); if (!$fp) { echo "$errstr ($errno)\n"; } else { $out = "POST $path HTTP/1.1\r\n"; $out .= "Host: $host\r\n"; $out .= "Content-type: application/x-www-form-urlencoded\r\n"; $out .= "Connection: Close\r\n"; $out .= "Content-Length: $len\r\n"; $out .= "\r\n"; $out .= $post."\r\n"; fwrite($fp, $out); fclose($fp); } }
결국 인트라넷 IP를 통해 호출되는데 왜 이럴까요?
해결 방법:
문제의 근본 원인이 발견되었습니다.
서버 설정 문제, 로컬 호스트가 모니터링되지 않습니다.
서버 네트워크 환경, 어떤 네트워크 관리자가 그랬는지 알 수 없으며, 서버가 자체적으로 액세스할 수 없습니다. 외부 네트워크 IP를 통해.
이 결과 fsockopen은 192를 통해서만 액세스할 수 있습니다.
추천 학습: "PHP 비디오 튜토리얼"
위 내용은 fsockopen PHP 작업 실패 문제를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!