下面是我的代码片段
$fp = fsockopen($s['url'], 80, $errno, $errstr, 5);
if($fp){
fwrite($fp, $out);
fclose($fp);
当我运行它时,它输出:
无法连接到www.mydomain.net/1/file.php:80 (php_network_getaddresses: getaddrinfo失败:名称或服务未知
我使用它将GET数据提交到$s['url']
我不知道为什么。任何帮助都将不胜感激。
发布于 2010-04-18 16:16:45
如果您只想将GET数据提交到URL,则应该使用简单的内容,如file_get_contents();
$myGetData = "?var1=val1&var2=val2";
file_get_contents($url.$myGetData);
发布于 2010-04-18 16:11:57
不能使用fsockopen
直接打开与远程主机上路径的连接。当第一个参数的唯一有效值是主机www.mydomain.net
时,url www.mydomain.net/1/file.php
包含路径。
如果您试图访问远程URL,那么file_get_contents()是您最好的选择。您可以为该函数提供完整的URL,它将使用普通的HTTP请求获取该位置的内容。
如果您只想发送一个超文本传输协议请求并忽略响应,那么可以使用fsockopen()
并手动发送超文本传输协议请求头,忽略任何响应。不过,使用cURL可能会更容易,或者只使用普通的老式fopen(),它将打开连接,但不一定读取任何响应。如果你想用fsockopen()
来做这件事,它可能是这样的:
$fp = fsockopen("www.mydomain.net", 80, $errno, $errstr, 30);
fputs($fp, "GET /1/file.php HTTP/1.1\n");
fputs($fp, "Host: www.mydomain.net\n");
fputs($fp, "Connection: close\n\n");
当然,任何错误处理都由您决定,但这意味着您不会浪费时间阅读响应。
发布于 2012-10-20 17:35:30
我在我的本地测试服务器和本地测试域上遇到了类似的问题,例如:使用函数GetImageSize()
的www.testdomain.loc;
通过在本地服务器上的hosts文件中添加主机名解决了此问题:
在文件/etc/hosts中,我添加了:
192.168.1.1 www.testdomain.loc
希望这对任何人都有帮助
https://stackoverflow.com/questions/2661546
复制相似问题