【问题标题】:simplexml_load_file not working "php_network_getaddresses: failed: Name or service not known"simplexml_load_file 不工作“php_network_getaddresses:失败:名称或服务未知”
【发布时间】:2011-09-27 13:17:10
【问题描述】:

我最近才开始收到这些警告,我不知道为什么,也不知道如何解决它。更让我困惑的是,它以前可以工作,我开始在另一个班级工作,现在我开始收到这个错误......

我使用 linux fedora 和 apache 作为网络服务器。

警告:simplexml_load_file() [function.simplexml-加载文件]: php_network_getaddresses:getaddrinfo 失败:名称或服务未知 GetImagesFlickr.php 第 17 行

警告: simplexml_load_file(http://api.flickr.com/services/rest/?method=flickr.photos.search&api_key=9eb9f5e5fb72d6d2fed06cf4e64ba9bb&media=photos&per_page=50&text=fgdc) [function.simplexml-load-file]:失败 打开流: php_network_getaddresses:getaddrinfo 失败:名称或服务未知 GetImagesFlickr.php 第 17 行

警告:simplexml_load_file() [function.simplexml-load-file]:I/O 警告:无法加载外部 实体 “http://api.flickr.com/services/rest/?method=flickr.photos.search&api_key=9eb9f5e5fb72d6d2fed06cf4e64ba9bb&media=photos&per_page=50&text=fgdc” 在 /var/www/html/yahoo/GetImagesFlickr.php 第 17 行

<?php
class GetImagesFlickr
{
    const API_KEY = "***"; // Flickr api key
    const MAX_RESULTS_RETURNED = 50; // Max results returned in search

    private $url; // Flickr webservice url

    public function __construct () 
    {
        $this->url = "http://api.flickr.com/services/rest/?method=flickr.photos.search&api_key=".self::API_KEY."&media=photos&per_page=".self::MAX_RESULTS_RETURNED;
    }

    public function getImages ($search_term)
    {
        // Perform search and store xml data
        $xml_data = simplexml_load_file("{$this->url}&text={$search_term}");

        $search_results = array();

        // Go through xml data and store to array
        foreach ($xml_data->photos->photo as $current_photo)
        {
            $id = $current_photo['id'];
                        $title = $current_photo['title'];
            $farm = $current_photo['farm'];
            $secret = $current_photo['secret'];
            $server = $current_photo['server'];
            $url = "http://farm{$farm}.static.flickr.com/{$server}/{$id}_{$secret}.jpg";

            $complete_photo = array (
                'id'     => $id,
                                'title'  => $title,
                'farm'   => $farm,
                'secret' => $secret,
                'server' => $server,
                'url'    => $url
            );

            $search_results[] = $complete_photo;
        }

        return $search_results;
    }
}
?>

【问题讨论】:

    标签: php simplexml


    【解决方案1】:

    您有网络/DNS 问题,而不是 PHP 问题。看来你的机器无法解析api.flickr.com的IP。

    “su”到您的网络服务器用户并尝试在那里解析名称,即

    $ sudo bash
      # get root
    $ su - apache
      # we're the apache user now
    $ ping api.flickr.com
    

    【讨论】:

    • 我该如何解决这个问题?...我可以在 Firefox 中访问 api.flickr.com。
    • 我可以 ping 它.. ping api.flickr.com PING www.flickr.vip.mud.yahoo.com (68.142.214.24) 56(84) 字节的数据。来自 www.flickr.vip.mud.yahoo.com (68.142.214.24) 的 64 个字节:icmp_req=1 ttl=51 time=242 ms 来自 www.flickr.vip.mud.yahoo.com (68.142.214.24) 的 64 个字节: icmp_req=2 ttl=51 时间=242 毫秒
    • 但是你的PHP/apache进程可以解析IP吗?尝试在您的请求中使用 IP 本身而不是 api.flickr.com。
    • 您好……是的,当我使用 IP 地址而不是 api.flickr.com 时它起作用了……你能解释一下为什么会这样吗?我更喜欢使用域而不是 ip.. thx :)
    • thx buddy.. 我更改了 /etc/rescolv.conf 的权限并重新启动了 apache,它成功了。
    猜你喜欢
    • 2014-02-18
    • 2013-08-09
    • 2017-02-21
    • 2013-12-02
    • 2016-02-07
    • 1970-01-01
    • 1970-01-01
    • 2013-03-14
    • 1970-01-01
    相关资源
    最近更新 更多