file_get_contents 现在按预期工作 - 外部域工作相同的域不
file_get_contents now working as expected - external domain works same domain doesn't
这是一个 wordpress 博客 rss 提要
在域 1 中,使用此脚本时它适用于域 2 但不适用于域 1。
在 domain2 中,当使用此脚本时它适用于 domain2 和 domain1
我的假设是这一定是权限错误,但我不知道是什么设置不正确(domain2 可以为两个域正常获取博客,而 domain1 将为 domain2 获取博客,但不能为 domain1 )
尝试使用 cURL 时结果相同,domain1 可以获取 domain2,但不能获取 domain1,而 domain2 可以从 domain1 和 domain2 获取提要
file_get_contents
$feedUrl = 'http://domain1.com/blog/feed/';
$feedUrl = 'http://domain2.com/blog/feed/';
$rawFeed = file_get_contents($feedUrl);
$xml = new SimpleXmlElement($rawFeed);
$i = 0;
foreach($xml->channel->item as $post)
{
$post->link = str_replace('&', '&', $post->link);
$date = new DateTime($post->pubDate);
if($i == 5) break; // number of feed items
$title = '<a href="' . $post->link . '" title="' . $post->title . '" class="feed-link">' . $post->title . '</a>';
?>
<p><?php echo $title; ?></p>
<?php
$i++;
}
?>
cURL
<?php
$feedUrl = 'http://domain1.com/blog/feed/';
$feedUrl = 'http://domain2.com/blog/feed/';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $feedUrl);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-type: text/xml'
));
$rawFeed = curl_exec($ch);
$error = curl_error($ch);
curl_close($ch);
$xml = new SimpleXMLElement($rawFeed);
echo "<pre>";
var_dump($obj);
echo "</pre>";
?>
URL 试过的款式和效果
/www/domain1/blog/feed/ (file or folder does not exist, which is accurate)
http://domain1.com/blog/feed/ (timeout)
http://555.555.555.555/blog/feed (ip address) (timeout)
我会从这些点开始:
1. DNS 问题?
也许您的 server2 上的 DNS table 有问题(无法解析 domain2)。
从脚本尝试执行函数
string gethostbyname ( string $hostname )
或者为了快速查看,您也可以尝试使用 IP 而不是域名。如果可行,问题出在 DNS table。尝试刷新 DNS 缓存。
2。服务器过滤?
如果您使用的是公共托管,请尝试写支持。也许他们可以提供帮助。也许他们正在使用过滤。
如果域 2 是您的,或者您有权访问其日志。检查访问日志。如果你真的收到从你的server2到domain2的请求。
3。你在server2的黑名单中吗?
也有可能你的server2 IP在domain2服务的黑名单中。
好的,问题与服务器有关...
来自服务器管理员Added www.domain1.com to the /etc/hosts file so that it looked to itself for the site.
感谢大家的帮助,希望这对以后遇到类似问题的其他人有所帮助
这是一个 wordpress 博客 rss 提要
在域 1 中,使用此脚本时它适用于域 2 但不适用于域 1。
在 domain2 中,当使用此脚本时它适用于 domain2 和 domain1
我的假设是这一定是权限错误,但我不知道是什么设置不正确(domain2 可以为两个域正常获取博客,而 domain1 将为 domain2 获取博客,但不能为 domain1 )
尝试使用 cURL 时结果相同,domain1 可以获取 domain2,但不能获取 domain1,而 domain2 可以从 domain1 和 domain2 获取提要
file_get_contents
$feedUrl = 'http://domain1.com/blog/feed/';
$feedUrl = 'http://domain2.com/blog/feed/';
$rawFeed = file_get_contents($feedUrl);
$xml = new SimpleXmlElement($rawFeed);
$i = 0;
foreach($xml->channel->item as $post)
{
$post->link = str_replace('&', '&', $post->link);
$date = new DateTime($post->pubDate);
if($i == 5) break; // number of feed items
$title = '<a href="' . $post->link . '" title="' . $post->title . '" class="feed-link">' . $post->title . '</a>';
?>
<p><?php echo $title; ?></p>
<?php
$i++;
}
?>
cURL
<?php
$feedUrl = 'http://domain1.com/blog/feed/';
$feedUrl = 'http://domain2.com/blog/feed/';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $feedUrl);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-type: text/xml'
));
$rawFeed = curl_exec($ch);
$error = curl_error($ch);
curl_close($ch);
$xml = new SimpleXMLElement($rawFeed);
echo "<pre>";
var_dump($obj);
echo "</pre>";
?>
URL 试过的款式和效果
/www/domain1/blog/feed/ (file or folder does not exist, which is accurate)
http://domain1.com/blog/feed/ (timeout)
http://555.555.555.555/blog/feed (ip address) (timeout)
我会从这些点开始:
1. DNS 问题?
也许您的 server2 上的 DNS table 有问题(无法解析 domain2)。
从脚本尝试执行函数
string gethostbyname ( string $hostname )
或者为了快速查看,您也可以尝试使用 IP 而不是域名。如果可行,问题出在 DNS table。尝试刷新 DNS 缓存。
2。服务器过滤? 如果您使用的是公共托管,请尝试写支持。也许他们可以提供帮助。也许他们正在使用过滤。
如果域 2 是您的,或者您有权访问其日志。检查访问日志。如果你真的收到从你的server2到domain2的请求。
3。你在server2的黑名单中吗? 也有可能你的server2 IP在domain2服务的黑名单中。
好的,问题与服务器有关...
来自服务器管理员Added www.domain1.com to the /etc/hosts file so that it looked to itself for the site.
感谢大家的帮助,希望这对以后遇到类似问题的其他人有所帮助