web-dev-qa-db-ja.com

解決方法[警告:fsockopen():接続できません]?

サーバーbuntu Server 14.04 LTSがオンラインであるか、共有ホスティングサーバーにないかを確認したい。私のサーバーにはドメインではなくIPがありますが、共有ホスティングサーバーにはドメインがあります。この目的のために、共有ホスティングサーバーで以下のコードを使用して、サーバーがオンラインかどうかを確認しました。

_<?php
$site = "XX.XX.XX.XX";
$port = 7550;
$fp = fsockopen($site,$port,$errno,$errstr,10);
if ($fp === false) { 
 print($errno." : ".$errstr); 
}  
if(!$fp)
{
echo "SERVER IS DOWN";
}
else
{
echo "SERVER IS UP ON PORT ".$port." AT ".$site;
fclose($fp);
}
?>
_

共有ホスティングサーバーのphpファイルに上記のコードを追加した後、それを実行すると、以下のエラーが発生しました。

Warning: fsockopen(): unable to connect to XX.XX.XX.XX:7550 (Connection timed out) in /home/USERNAME/public_html/index.php on line 4 110 : Connection timed out SERVER IS DOWN

誰かが共有ホスティングサーバーで_allow_url_fopen = On_がオンになっているかどうかを確認するように指示しました。次に、共有ホスティングサーバーの_php.ini_ファイルをチェックしてオンにしました。

今、私が周りの助けを探していたとき、他の誰かが私に両方(私の共有ホスティングサーバーと私のサーバー)がfsockopen()オンかどうかをチェックするように言いました。次に、以下のコードをphpファイルに記述し、両方のサーバーで実行しました。

_<?php
$fp = fsockopen ("localhost", 80, $errno, $errstr, 10);
if (!$fp) {
echo "$errstr ($errno)
\n";
}else
{
echo "fsockopen Is Working Perfectly.";
}
fclose ($fp);
?>
_

上記の.phpファイルを両方のサーバーで実行した後、両方のサーバーで同じ結果が得られました。

_fsockopen Is Working Perfectly._

重要な注意:サーバーIPで多くのPCを使用しているが、サーバーの電源がオフになっているため、サーバーIPはアクティブのままであることに注意してください。また、プロキシを使用してWebブラウザで_http://XX.XX.XX.XX:7550_を開くことができます。

4
Muhammad Hassan

Set set_error_handler()でエラーハンドラーを上書きした場合は、error_reporting()が0を返すかどうかを確認する必要があります。これは、エラーを抑制するために@が使用されたことを意味します。

set_error_handler('errorHandler');

function errorHandler($errno, $errstr, $errfile, $errline) {

    if (error_reporting() === 0) 
        return false;

    //handle error
    ...
}
2
Torge