简体   繁体   中英

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

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!

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.

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

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

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.

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

I had this error, when I have typo in url. Domain must exist:-)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM