이 간단한 코드를 고려해에서이상한 행동 :는 fsockopen
<?php
error_reporting(E_ALL);
//error_reporting(E_STRICT);
date_default_timezone_set('Asia/Calcutta');
$smtp_server = fsockopen("onelocalserver.com", 25, $errno, $errstr, 120);
if(!$smtp_server)
{
// We have an error, do something
echo " Error found! <br>$errno <br>$errstr";
exit;
}
?>
를 윈도우 XP + php5.3.8 + 아파치 2.2, 난 오류 얻을 : 경고 : (는 fsockopen)에 연결할 수 없습니다를 onelocalserver.com:25 (대상 컴퓨터가 적극적으로 거부했기 때문에 연결할 수 없습니다.)
그러나 Apache와 PHP가 설치된 시스템에서 명령 프롬프트에서 PHP를 실행하면 ex : c : \ php \ php.exe filename.php (위의 코드가 파일 이름에있는 경우), 그러면 오류가 발생하지 않습니다!
서버 onelocalserver.com이 포트 25에서 수신 대기 중입니다. SMTP 서버가 실행 중입니다.
아이디어가 있으십니까? 이
미리 감사드립니다 다른 IP 주소로 여러 가지 시도 후
컴퓨터에 방화벽 소프트웨어가 설치되어 있습니까? 'php.exe'가 나가는 연결을 허용하는 것처럼 들리는데,'httpd.exe'는 그렇지 않습니다. 방화벽 소프트웨어를 일시적으로 사용 불가능으로 설정 한 다음 작동하면 'httpd.exe'를 예외 목록에 추가하십시오. '대상 머신이 적극적으로 거부했다'는 것은'SYN '에 대한 응답으로 TCP RST 패킷을 수신하고 있음을 의미하므로 [Wireshark] (http://wireshark.org/)를 가져 와서 이것이 맞는지 확인하십시오 . – DaveRandom
Wireshark 팁을 주셔서 감사합니다. 나는 그것을 실행하고 PHP에서 명령 행 인터페이스를 사용할 때, 요청이 통과되었음을 알 수있다. 그러나 브라우저를 통해 파일을 실행할 때 wireshark는 fsockopen과 함께 사용한 IP 주소에 대한 항목을 등록하지 않았습니다. fsockopen 명령에서 호스트 이름을 올바른 IP 주소로 바꿨습니다! 기묘한! IT 담당자는 방화벽이 실행되고 있지 않다고 주장합니다. 동일한 결과로 Microsoft 방화벽 서비스가 실행되고 중단되었습니다. 어떤 아이디어라도주세요? – Rajan
아파치를 통해 WS를 시도 할 때 WS에서 아무 것도 볼 수 없다면, 패킷이 네트워크로 전달되기 전에 어떤 종류의 패킷 필터가 확실히 차단됩니다. Windows 방화벽 서버에는 아웃 바운드 트래픽을 필터링 할 수있는 기능이 없습니다 (AFAIK). Norton 및 McAfee와 같은 귀찮은 소프트웨어 영역에 해당됩니다. 이들은 일반적인 용의자이며 시스템의 추적도 잘 보입니다. – DaveRandom