2012-04-18 17 views
0

でのApache、PHP Windowsのこの単純なコードを検討します。Windows XP +のphp5.3.8 + apacheの2.2で奇妙な行動: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; 
    } 
    ?> 

を、私はエラーを取得: 警告:fsockopenの():に接続できませんがonelocalserver.com:25(ターゲットマシンが積極的にそれを拒否したため接続できませんでした)

しかし、ApacheとPHPがインストールされているシステムでは、コマンドプロンプトからPHPを実行すると、ex:c:\ php \ php.exe filename.php(上記のコードはファイル名にあります)、エラーは表示されません!

サーバーonelocalserver.comはポート25でリッスンしています。そこにはSMTPサーバーが実行されています。

アイデア?これは

事前のおかげで異なるIPアドレスを持ついくつかの試行後

+1

マシンにファイアウォールソフトウェアがインストールされていますか? 'php.exe'のように私に聞こえるのは発信接続を許可され、' httpd.exe'はそうではありません。あなたのファイアウォールソフトウェアを一時的に無効にして、それがうまくいけば 'httpd.exe'を例外リストに追加してください。 'ターゲットマシンは積極的にそれを拒否しました'は、 'SYN'に応答してTCP RSTパケットが受信されていることを示唆しているので、[Wireshark](http://wireshark.org/)を出して、 。 – DaveRandom

+0

Wiresharkのヒントをありがとう。私はそれを実行し、私はPHPでコマンドラインインターフェイスを使用すると、私は要求が通過したことを確認します。しかし、私がブラウザ上でファイルを実行すると、wiresharkはfsockopenで使用したIPアドレスのエントリも登録しませんでした。私はfsockopenコマンドでホスト名を正しいIPアドレスに置き換えました!奇妙な! ITスタッフはファイアウォールが動作していないと主張しています。私は、マイクロソフトのファイアウォールサービスが実行されているのを見て、同じ結果で停止しました!どのようなアイデアをしてください? – Rajan

+0

Apacheで試したときにWSで何も表示されない場合、パケットがネットワークに渡される前にパケットをブロックする何らかの種類のパケットフィルタがあります。 Windowsファイアウォールサーバーには、アウトバウンドトラフィックをフィルタリングするための機能(AFAIK)がありません。NortonやMcAfeeのような厄介なソフトウェアのドメインに該当します。これらは通常の疑いがあります。 – DaveRandom

答えて

0

本当に奇怪ですが、私は唯一の問題は、それはコマンドラインインタフェースでうまく動作しますが、経由で動作しませんでしたポート25でfsockopenのに気づきましたウェブブラウザ。 PHPは以前、CGIとしてWindowsにインストールされていました。私はApacheハンドラとして設定されてもまだ動作しないのか、それがうまくいくかどうかは分かります。 http://www.php.net/manual/en/install.windows.apache2.php

これが誰かを助けることを願っています!