【问题标题】:Simple PHP & JSON简单的 PHP 和 JSON
【发布时间】:2012-01-19 20:48:34
【问题描述】:

我在使用这个脚本时遇到了问题。它适用于我的本地服务器和测试服务器,但似乎无法在我的 Rackspace 服务器上正确运行。

<?php

$path = "http://query.yahooapis.com/v1/public/yql?q=";
$path .= urlencode("SELECT * FROM feed WHERE url='http://feeds.feedburner.com/TMSEvents'");
$path .= "&format=json";

$feed = file_get_contents($path, true);

$feed = json_decode($feed); ?>

这很简单,但我在 Rackspace 服务器上收到以下错误消息:

PHP 警告: file_get_contents(http://query.yahooapis.com/v1/public/yql?q=SELECT+%2A+FROM+feed+WHERE+url%3D%27http%3A%2F%2Ffeeds.feedburner.com%2FTMSEvents%27&format= json) [function.file-get-contents]: 无法打开流:HTTP 请求失败! HTTP/1.0 500 999 本页 目前不可用

任何人都知道为什么这可以在一台服务器上运行,但不能在另一台服务器上运行?谢谢!

【问题讨论】:

  • 是否有防火墙阻止传出端口 80 请求?
  • 您可能有出站防火墙或代理设置...通常是大型提供商的出站代理。
  • 确实,似乎是代理问题。除非远程服务器关闭,我怀疑这是因为我可以从浏览器成功发出该请求。
  • 尝试向例如http://www.yahoo.com/ 发出请求,看看是否得到相同的结果。如果你这样做,它可能是一个代理。你也可以问你的主人......
  • 尝试执行wget http://google.com 并查看是否收到 500 错误或 index.html 页面。

标签: php file-get-contents json


【解决方案1】:

看这个:http://codular.com/curl-with-php

试试下面的代码。经过测试,它工作正常:

<?php
$path = "http://query.yahooapis.com/v1/public/yql?q=";
$path .= urlencode("SELECT * FROM feed WHERE url='http://feeds.feedburner.com/TMSEvents'");
 $path .= "&format=json";
 // Get cURL resource
 $curl = curl_init();
 // Set some options - we are passing in a useragent too here
 curl_setopt_array($curl, array(
     CURLOPT_RETURNTRANSFER => 1,
     CURLOPT_URL => $path,
     CURLOPT_USERAGENT => 'Codular Sample cURL Request'
 ));
 // Send the request & save response to $resp
 $feed = curl_exec($curl);
 // Close request to clear up some resources
 curl_close($curl);

 $feed = json_decode($feed);
 ?>

【讨论】:

猜你喜欢
  • 2015-01-02
  • 2012-04-13
  • 2013-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多