ホームページ  >  記事  >  バックエンド開発  >  fopensocket について質問する

fopensocket について質問する

WBOY
WBOYオリジナル
2016-06-23 13:54:111338ブラウズ

ローカル WAPM 環境、php.ini は openallow_url_fopen = オン
write.php
ffea7ff198c3f017685836b8b08b097an"; }
else
{
fputs($fp,"GET / HTTP/1.0nHost: http://localhost/1. php");
fclose($fp);
}
?>
1.php は localhost のルート ディレクトリに存在しますが、write.php をテストして実行した後、
は 1.php が実行されておらず、1.php が実行されていることがわかりました。 php は個別に実行できます
理由を聞いてもいいですか?
http://localhsot/1.php を 1.php に変更しようとしましたが、動作しませんでした。プロセス中にプロンプ​​トが表示されず、設定されたリンクを作成できませんでした


ディスカッションに返信 (解決策)

$fp = fsockopen('localhost', 80, $errno, $errstr, 5); if(!$fp) {   echo "$errstr ($errno)<br />\n"; }else {  fputs($fp,"GET /1.php HTTP/1.0\r\nHost: localhost\r\nConnection: Close\r\n\r\n");  while (!feof($fp)) {    echo fgets($fp, 128);  }  fclose($fp);}

$fp = fsockopen('localhost', 80, $errno, $errstr, 5); if(!$fp) {   echo "$errstr ($errno)<br />\n"; }else {  fputs($fp,"GET /1.php HTTP/1.0\r\nHost: localhost\r\nConnection: Close\r\n\r\n");  while (!feof($fp)) {    echo fgets($fp, 128);  }  fclose($fp);}

in ローカル テスト中に、他のコンピューターが私のコンピューターにアクセスするとき、IP メソッドを使用して通常どおり実行できます。つまり、私のテスト IP が 192.168.10.60 であると仮定すると、
他のコンピューターは http を使用できます。 ://192.168.10.60/write.php で正常に動作しますが、
を実行すると、サーバーの IP は 192.168.10.3 であると見なされます。
接続方法を192.168.10.3に変更するには、fputsのときに絶対パスを記述する必要があります...どういう状況ですか?

これって普通じゃないですか?

192.168.10.3 に置いた場合

もちろん、アクセスするには絶対 IP を使用する必要があります。


これって普通じゃないですか?

2 つの異常があります

1. 私のマシンをテストホストとして使用すると、他のマシンは私のマシンにアクセスでき、localhost を使用すると正常に実行されますが、プログラムがサーバー上に配置されると、私のマシンはサーバーにアクセスできなくなります。絶対パスを書くというのは fsocketopen がリンクを張るときに書くということですが、例えばプログラムを web ディレクトリ配下の ca/ma ディレクトリに置いた場合、次の
fwrite パスを 192.168 と書く必要があります。 .10.3/ca /ma/1.php、これは、書き込みプログラムと 1.php プログラムが同じディレクトリに配置されている場合でも必要です。
ただし、ローカルに保存すると同じ現象が発生しますが、他のコンピューターを使用してローカルにアクセスすると正常に動作します。ローカルシステムはwinシステム、サーバーはLinuxシステムのせいでしょうか?

1. プログラムはあなたのマシン上で実行されているため、それにアクセスするために localhost を使用するのが通常です。また、それにアクセスするためにあなたのマシンの IP を使用するのも通常です
2. プログラムがサーバーに移動されると、 localhost を使用する理由 アクセスも可能ですが、サーバーの特殊性により、127.0.0.1 から localhost へのマッピングが存在しない可能性があり、アクセスできません。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。