奇怪的行为:使用FSockopen的Apache PHP Windows

时间:2012-04-18 10:53:27

标签: php windows apache 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;
     }
  ?>

在Windows XP + php5.3.8 + apache 2.2上,我收到错误消息: 警告:fsockopen():无法连接到onelocalserver.com:25(由于目标计算机主动拒绝连接,因此无法建立连接。)

但是,在安装Apache和PHP的同一系统上,如果我从命令提示符ex:c:\ php \ php.exe filename.php运行php(其中上面的代码在文件名中),那么我就不要得不到错误!

服务器onelocalserver.com正在侦听端口25:在那里运行一个SMTP服务器。

有什么想法吗?这真是太棒了

提前致谢

1 个答案:

答案 0 :(得分:0)

经过多次尝试使用不同的IP地址后,我意识到唯一的问题是端口25上的fsockopen。它适用于命令行界面,但无法通过Web浏览器工作。 PHP早先作为CGI安装在Windows中。我想我会看到它在设置为Apache处理程序时是否仍然无法正常工作! http://www.php.net/manual/en/install.windows.apache2.php

希望这有助于某人!