File_get_contents(): php_network_getaddresses: getaddrinfo не удалось: имя или услуга неизвестны

Я пытаюсь загрузить изображение с сервера с помощью php script на моем сайте на сервере xampp.

Изображение загружается с помощью функции 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);
}

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

Предупреждение: file_get_contents(): php_network_getaddresses: getaddrinfo не удалось: имя или услуга, неизвестные в /opt/lampp/htdocs/xampp/project/upload _art.php в строке 19

Предупреждение: file_get_contents (http://app6.pixlr.com/_temp/528afa6e2f7cc6a5b1000101.jpg): не удалось открыть поток: php_network_getaddresses: getaddrinfo не удалось: Имя или услуга, не известные в /opt/lampp/htdocs/xampp/project/upload _art.php в строке 19

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

Ответы

Ответ 1

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

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

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

Ответ 2

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

setsebool -P nis_enabled 1
setsebool -P httpd_can_network_connect 1

Ответ 3

Вот советы, если вы используете 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

Ответ 4

В отношении одного из комментариев @DUzun и тех, кто, как я, знаком с сервером в целом, но не специализируется в области компьютерных наук, я исправил проблему в Linux/Centos6 (Plesk Onyx) следующим образом:

1) Открытие /etc/resolv.conf (мой файл был пуст)

2) Добавлено:

nameserver 8.8.8.8
nameserver 8.8.4.4

options rotate
options timeout:3

Надеюсь, это поможет кому-то там.

Ответ 5

во-первых, и до того, как все будет в курсе подключения к Интернету

Ответ 6

Если вы используете имя вместо IP-адреса в вашем вызове smtp_host fsockopen(), и ваш сервер не может преобразовать это имя в IP-адрес. Если возможно, выясните IP-адрес сервера, к которому вы пытаетесь подключиться, и используйте его вместо этого. Надеюсь, что так будет хорошо. пример

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