file_get_contents():php_network_getaddresses:getaddrinfo failed:名称或服务未知

时间:2013-11-19 06:06:46

标签: php api plugins file-get-contents web-development-server

我正在尝试使用xampp服务器上的网站上的php脚本从服务器下载图像。

正在使用函数file_get_contents下载图像。

在服务器上下载的php代码是:

if(isset($_GET['path']) && isset($_GET['username'])) {
  echo "path:".$_GET['path'];
  $temp = explode(".", $_GET['path']);
  $extension = end($temp);
  $fname="images/".$_GET['title'];
  $filenameIn  = $_GET['path'];
  $filenameOut = "" . $fname;
  $contentOrFalseOnFailure   = file_get_contents($filenameIn);
  $byteCountOrFalseOnFailure = file_put_contents($filenameOut,$contentOrFalseOnFailure);
}

但是我收到了这个错误:

  

警告:file_get_contents():php_network_getaddresses:getaddrinfo失败:名称或服务未知   第19行/opt/lampp/htdocs/xampp/project/upload_art.php

     

警告:file_get_contents(http://app6.pixlr.com/_temp/528afa6e2f7cc6a5b1000101.jpg):   无法打开流:php_network_getaddresses:getaddrinfo失败:   名称或服务未知   第19行/opt/lampp/htdocs/xampp/project/upload_art.php

我已经检查了所有发布的答案,但似乎没有解决问题。请帮忙!

5 个答案:

答案 0 :(得分:21)

这意味着您的服务器无法连接到外部世界

鉴于DNS问题,这可能不会改变任何内容

因此,如果您有权限,请尝试将/etc/resolv.conf文件中的名称服务器更改为其他名称服务器。

答案 1 :(得分:11)

httpd允许连接外部。检查你的selinux政策。 这有助于我解决连接问题:

setsebool -P nis_enabled 1
setsebool -P httpd_can_network_connect 1

答案 2 :(得分:1)

以下是针对您的网络应用使用 Docker env的建议。 当我使用docker php image时,我遇到了同样的问题,在yml文件中添加了dns选项 解决了我的问题

<强>搬运工-compose.yml

version: '2'

services:
  webserver:
    build: ./docker/webserver
    image: my_webapp
    dns: 8.8.8.8
    dns_opt:
      - use-vc
      - no-tld-query
    ports:
      - 80:80
      - 443:443
    volumes:
      - ./:/var/www/html

答案 3 :(得分:1)

参考@DUzun的评论之一,对于那些像我这样的人,他们对服务器总体上很熟悉,但对计算机科学专业却不太熟悉,我将问题解决在 Linux / Centos6(Plesk Onyx)< / em>通过:

1)打开/etc/resolv.conf(我的文件为空)

2)添加:

nameserver 8.8.8.8
nameserver 8.8.4.4

options rotate
options timeout:3

希望这对外面的人有帮助。

答案 4 :(得分:1)

如果在smtp_host fsockopen()调用中使用的是名称而不是IP地址,并且服务器无法将该名称解析为IP地址。如果可能,找出您要连接的服务器的IP,然后改用该IP。希望它能正常工作。 示例

$config = Array(
    'protocol' => 'smtp',
    'smtp_host' => '166.62.73.4', // mail.servername.com
    'smtp_port' => 587,
    'smtp_timeout' => '7',
    'smtp_user' =>'test@servername.com',
    'smtp_pass' => 'password',
    '_smtp_auth'   => false,
    'mailtype'  => 'html', 
    'charset'   => 'iso-8859-1',
    'crlf' => '\r\n',
    'newline' => "\r\n"
            );