23

我正在尝试使用我在 xampp 服务器上的网站上的 PHP 脚本从服务器下载图像。

正在使用函数 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 failed: Name or service not known in /opt/lampp/htdocs/xampp/project/upload_art.php on line 19

警告:file_get_contents(http://app6.pixlr.com/_temp/528afa6e2f7cc6a5b1000101.jpg):无法打开流:php_network_getaddresses:getaddrinfo 失败:/opt/lampp/htdocs/xampp/project/upload_art 中的名称或服务未知。第 19 行的 php

我已经在这里查看了所有发布的答案,但似乎没有一个可以解决问题。请帮忙!

4

6 回答 6

23

这意味着您的服务器无法连接到外部世界

鉴于 DNS 问题,这可能不会改变任何事情

因此,如果您有权限,请尝试将 /etc/resolv.conf 文件中的名称服务器更改为其他名称服务器。

于 2013-11-19T07:00:01.037 回答
11

也应该允许 httpd 连接外部。检查你的 selinux 政策。这有助于我解决连接问题:

setsebool -P nis_enabled 1
setsebool -P httpd_can_network_connect 1
于 2014-03-09T20:05:22.110 回答
7

参考@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

希望这可以帮助那里的人。

于 2018-10-12T17:17:52.327 回答
2

如果您将Docker env 用于您的 Web 应用程序,这里有一些建议。我在使用 docker php 映像时遇到了同样的问题,在 yml 文件中添加了 dns 选项解决了我的问题

码头工人-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
于 2017-07-06T19:00:01.223 回答
1

如果您在 smtp_host fsockopen() 调用中使用名称而不是 IP 地址,并且您的服务器无法将该名称解析为 IP 地址。如果可能,请找出您尝试连接的服务器的 IP,然后改用它。希望它会正常工作。 例子

$config = Array(
    'protocol' => 'smtp',
    'smtp_host' => '166.62.73.4', // mail.servername.com
    'smtp_port' => 587,
    'smtp_timeout' => '7',
    'smtp_user' =>'test@servername.com',
    'smtp_pass' => 'password',
    '_smtp_auth'   => false,
    'mailtype'  => 'html', 
    'charset'   => 'iso-8859-1',
    'crlf' => '\r\n',
    'newline' => "\r\n"
            );
于 2019-07-04T09:26:33.440 回答
1

当我在 url 中有错字时,我遇到了这个错误。域必须存在:-)

于 2021-11-07T19:58:33.140 回答