wake-up-neo.com

file_get_contents (): php_network_getaddresses: getaddrinfo fehlgeschlagen: Name oder Dienst nicht bekannt

Ich versuche, ein Bild von einem Server mit einem PHP Skript auf meiner Website auf einem xampp-Server herunterzuladen.

Das Bild wird mit der Funktion file_get_contents heruntergeladen.

Der PHP-Code zum Herunterladen auf den Server ist:

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

Aber ich erhalte diesen Fehler:

Warnung: file_get_contents (): php_network_getaddresses: getaddrinfo fehlgeschlagen: Name oder Dienst in /opt/lampp/htdocs/xampp/project/upload_art.php in Zeile 19 nicht bekannt

Warnung: file_get_contents ( http://app6.pixlr.com/_temp/528afa6e2f7cc6a5b1000101.jpg ): Öffnen des Streams fehlgeschlagen: php_network_getaddresses: getaddrinfo fehlgeschlagen: Name oder Dienst in/opt/lampp/htdocs nicht bekannt /xampp/project/upload_art.php in Zeile 19

Ich habe alle Antworten hier ausgecheckt, aber keine scheint das Problem zu lösen. Bitte helfen Sie!

16
user3007493

Dies bedeutet, dass Ihr Server keine Verbindung zur Außenwelt herstellen kann

Dies wird wahrscheinlich angesichts der DNS-Probleme nichts ändern

Wenn Sie über die Berechtigung verfügen, versuchen Sie, die Nameserver in Ihrer Datei /etc/resolv.conf in andere Nameserver zu ändern.

21
Siraj Khan

Es sollte auch httpd erlaubt sein, sich draußen zu verbinden. Überprüfen Sie Ihre Selinux-Richtlinie. Dies hilft mir, das Verbindungsproblem zu lösen:

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

Hier finden Sie Tipps für den Fall, dass Sie Docker env für Ihre Web-App verwenden. Ich hatte das gleiche Problem, als ich das Docker-PHP-Image verwendete und DNS-Optionen in der YML-Datei hinzufügte. löste mein 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
2

In Bezug auf einen der Kommentare von @DUzun und für diejenigen wie mich, die mit dem Server im Allgemeinen vertraut sind, aber keinen Schwerpunkt in Informatik haben, habe ich das Problem auf Linux/Centos6 (Plesk Onyx) behoben durch:

1) Eröffnung /etc/resolv.conf (meine Datei war leer)

2) Hinzugefügt:

nameserver 8.8.8.8
nameserver 8.8.4.4

options rotate
options timeout:3

Hoffentlich hilft das jemandem da draußen.

2
Rasclatt

Wenn Sie in Ihrem Aufruf von smtp_Host fsockopen () anstelle einer IP-Adresse einen Namen verwenden und Ihr Server diesen Namen nicht in eine IP-Adresse auflösen kann. Ermitteln Sie nach Möglichkeit die IP-Adresse des Servers, zu dem Sie eine Verbindung herstellen möchten, und verwenden Sie diese. Hoffe, es wird gut funktionieren. Beispiel

$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