php_network_getaddresses : getaddrinfo failed: Name or service not known

标签 php fsockopen

这是我的代码片段

$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']

提交 GET 数据

我不知道为什么。任何帮助将不胜感激。

最佳答案

您不能使用 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/

相关文章:

php - 文件获取内容或 fsockopen - 超时问题

javascript - 使用 JavaScript 和 HTML 表单传递 php 变量

PHP $_FILES 计数不正确

php - 在页面加载时加载 gif

php - 使用单个 fsockopen 获取多个页面

php - TLS 1.2 和 HTTP/1.1 升级(PHP fsockopen)

javascript - 使用 blueimp jQuery 文件上传

php - Laravel - Composer 在更新平台后检测到问题

php - CURL 与 fsockopen 分块

php - 如何在 PHP 中将 fsockopen(或兼容)与 SOCKS 代理一起使用?