> 백엔드 개발 > PHP 튜토리얼 > 请教个fopensocket的问题

请教个fopensocket的问题

WBOY
풀어 주다: 2016-06-23 13:54:11
원래의
1367명이 탐색했습니다.

本地WAPM环境,php.ini有打开allow_url_fopen = On
write.php
$fp = fsockopen('localhost',80,&$errno,&$errstr,5); 
if(!$fp)

echo "$errstr ($errno)
\n"; 

else
{
fputs($fp,"GET / HTTP/1.0\nHost: http://localhost/1.php");
fclose($fp);
}
?>
在localhost根目录下存在1.php,但测试运行write.php后,
发现1.php并没有被执行,单独执行1.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);}
로그인 후 복사
로그인 후 복사


在本地测试的时候,其他电脑访问我这台电脑,用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
就不是localhost了,当然要用绝对ip访问,有什么问题?

这不是很正常吗?


两点不正常
1、以我本机为测试主机时,其他机器访问我本机,在使用localhost的时候可以正常运行;而把程序放到服务器时,我本机访问服务器就不行;
2、我说的写绝对路径是不是指fsocketopen建立链接时写,而是譬如当程序是放在web目录下的ca/ma目录下时,下面的
fwrite的路径要写192.168.10.3/ca/ma/1.php,即便我write程序与1.php程序是放置在同一目录下也需要这样。
但同样的这个现象我放在本地时,用其他电脑访问本地却正常。本地是win系统,服务器是linux系统,然道是因为OS的关系?

1、程序是在你的机器上运行的,所以用 localhost 能访问到是正常的,用你机器的 ip 能访问到也是正常的
2、当程序搬迁至服务器上时,按理说用 localhost 也是能访问到的,但由于服务器的特殊性可能没有做 127.0.0.1 到 localhost 的映射,那么就访问不到了。

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿