2013-11-19 3 views
15

Я пытаюсь загрузить изображение с сервера, используя php-скрипт на моем сайте на сервере xampp.file_get_contents(): php_network_getaddresses: getaddrinfo не удалось: имя или услуга неизвестны

Изображение загружается с помощью функции file_get_contents.

Код PHP для загрузки на сервере:

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

Но я получаю эту ошибку:

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

Я проверил все отправленные ответы здесь, но никто, кажется, не разрешить вопрос. Пожалуйста помоги!

+1

сделать это filenameIn = подрезать (filenameIn); $ contentOrFalseOnFailure = file_get_contents ($ filenameIn); – Ruydo

+0

Возможный дубликат [PHP: файл \ _get \ _contents ($ loc) не работает] (https://stackoverflow.com/questions/542046/php-file-get-contentsloc-fails) – dotancohen

ответ

17

Это означает, что ваш сервер не может подключиться к внешнему миру

Это, вероятно, ничего не изменится, учитывая DNS вопросы,

Итак, если у вас есть разрешение, попробуйте изменить имя сервера в файле/и т.д./resolv.conf в другие серверы имен.

+0

как что? Я только один IP-адрес – samayo

+0

Я добавил '8.8.8.8' и' 8.8.4.4', и проблема исчезла! – DUzun

11

Должно быть также httpd разрешено подключаться наружу. Проверьте политику selinux. это помогает мне решить проблему подключения:

setsebool -P nis_enabled 1 
setsebool -P httpd_can_network_connect 1 
+1

То же самое здесь, но ни один из этих вариантов не помог. –

+0

Также этот: 'setsebool -P httpd_verify_dns = 1' и не забыл перезапустить:;) ' sudo systemctl restart httpd' – Honza

0

Вот советы в случае, если вы используете Docker ENV для вашего веб-приложения. У меня была такая же проблема, когда я использовал docker php image, добавил параметры dns в yml-файле решил мою проблему.

докер-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 
0

первый вообще и перед любой вещью цыпленка подключения к интернету

+0

Не совсем уверен, что вы имели в виду под «цыпленком». :) – kta

+0

Я имею в виду проверку –

Смежные вопросы