file_get_contents(): php_network_getaddresses: getaddrinfo failed: Name or service not known

一曲冷凌霜 提交于 2019-11-26 03:44:37

问题


I\'m trying to download an image from a server using a PHP script on my website on xampp server.

The image is being downloaded using the function file_get_contents.

The php code for downloading on the server is:

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);
}

But I\'m getting this error:

Warning: file_get_contents(): php_network_getaddresses: getaddrinfo failed: Name or service not known in /opt/lampp/htdocs/xampp/project/upload_art.php on line 19

Warning: file_get_contents(http://app6.pixlr.com/_temp/528afa6e2f7cc6a5b1000101.jpg): failed to open stream: php_network_getaddresses: getaddrinfo failed: Name or service not known in /opt/lampp/htdocs/xampp/project/upload_art.php on line 19

I have checked out all posted answers here but none seems to resolve the issue. Please help!


回答1:


It means your server cannot connect to the outside world

This probably won't change anything given the DNS issues

So, If you have permission, try changing the name servers in your /etc/resolv.conf file to other nameservers.




回答2:


There should be as well httpd allowed to connect outside. Check you selinux policy. this helps me to solve connection problem:

setsebool -P nis_enabled 1
setsebool -P httpd_can_network_connect 1



回答3:


Here are advice in case you are using Docker env for your web app. I had same problem when I used docker php image, added dns options in yml file solved my problem.

docker-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



回答4:


In reference to one of the comments by @DUzun, and for those like myself who are familiar with the server in general but not a computer science major, I fixed the issue on Linux/Centos6 (Plesk Onyx) by:

1) Opening /etc/resolv.conf (my file was empty)

2) Added:

nameserver 8.8.8.8
nameserver 8.8.4.4

options rotate
options timeout:3

Hopefully this helps someone out there.




回答5:


If you are using a name instead of an IP address in your smtp_host fsockopen() call, and your server cannot resolve that name into an IP address. If possible, find out the IP of the server you are trying to connect to, and use that instead. Hope so it will work fine. Example

$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"
            );


来源:https://stackoverflow.com/questions/20064372/file-get-contents-php-network-getaddresses-getaddrinfo-failed-name-or-servi

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!