web-dev-qa-db-fra.com

file_get_contents (): php_network_getaddresses: échec de getaddrinfo: nom ou service inconnu

J'essaie de télécharger une image à partir d'un serveur en utilisant un script PHP sur mon site Web sur le serveur xampp.

L'image est téléchargée à l'aide de la fonction file_get_contents.

Le code php à télécharger sur le serveur est:

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

Mais je reçois cette erreur:

Avertissement: file_get_contents (): php_network_getaddresses: échec de getaddrinfo: nom ou service inconnu dans /opt/lampp/htdocs/xampp/project/upload_art.php sur la ligne 19

Avertissement: file_get_contents ( http://app6.pixlr.com/_temp/528afa6e2f7cc6a5b1000101.jpg ): échec d'ouverture du flux: php_network_getaddresses: échec de getaddrinfo: nom ou service inconnu dans/opt/lampp/htdocs /xampp/project/upload_art.php sur la ligne 19

J'ai vérifié toutes les réponses publiées ici, mais aucune ne semble résoudre le problème. Aidez-moi!

16
user3007493

Cela signifie que votre serveur ne peut pas se connecter au monde extérieur

Cela ne changera probablement rien étant donné les problèmes DNS

Donc, si vous y êtes autorisé, essayez de changer les serveurs de noms de votre fichier /etc/resolv.conf en d'autres serveurs de noms.

21
Siraj Khan

Il devrait également y avoir httpd autorisé à se connecter à l'extérieur. Vérifiez votre politique selinux. cela m'aide à résoudre le problème de connexion:

setsebool -P nis_enabled 1
setsebool -P httpd_can_network_connect 1
11
Stepan Hruska

Voici des conseils au cas où vous utilisez Docker env pour votre application Web. J'ai eu le même problème lorsque j'ai utilisé l'image PHP Docker, ajouté des options DNS dans le fichier yml résolu mon problème .

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
2
Lauris Kuznecovs

En référence à l'un des commentaires de @DUzun, et pour ceux comme moi qui connaissent le serveur en général mais pas un majeur en informatique, j'ai résolu le problème sur Linux/Centos6 (Plesk Onyx) par:

1) Ouverture /etc/resolv.conf (mon fichier était vide)

2) Ajouté:

nameserver 8.8.8.8
nameserver 8.8.4.4

options rotate
options timeout:3

J'espère que cela aide quelqu'un là-bas.

2
Rasclatt

Si vous utilisez un nom au lieu d'une adresse IP dans votre appel smtp_Host fsockopen () et que votre serveur ne peut pas résoudre ce nom en une adresse IP. Si possible, recherchez l'IP du serveur auquel vous essayez de vous connecter et utilisez-le à la place. J'espère que cela fonctionnera bien. Exemple

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