这是我的代码片段
$fp = fsockopen($s['url'], 80, $errno, $errstr, 5);
if($fp){
fwrite($fp, $out);
fclose($fp);
当我运行它时,它会输出:
unable to connect to www.mydomain.net/1/file.php:80 (php_network_getaddresses: getaddrinfo failed: Name or service not known
我正在使用它向 $s['url']
我不知道为什么。任何帮助将不胜感激。
最佳答案
您不能使用 fsockopen
打开直接到远程主机上的路径的连接。当第一个参数的唯一有效值是主机 www.mydomain.net
时,URL www.mydomain.net/1/file.php
包含一个路径。
如果您尝试访问远程 URL,则 file_get_contents()是你最好的选择。您可以为该函数提供完整的 URL,它会使用正常的 HTTP 请求获取该位置的内容。
如果您只想发送 HTTP 请求并忽略响应,您可以使用 fsockopen()
并手动发送 HTTP 请求 header ,忽略任何响应。 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");
当然,任何错误处理都取决于您,但这意味着您不会浪费时间阅读响应。
关于php_network_getaddresses : getaddrinfo failed: Name or service not known,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2661546/