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