【问题标题】:Application works on local dev enviroment but not when deployed on server?应用程序在本地开发环境中工作,但在服务器上部署时不工作?
【发布时间】:2013-07-25 19:46:09
【问题描述】:

我使用 flickr API + PHP 创建了一个应用程序。不知何故,我的代码在我的本地机器上工作,但是当我将它部署到服务器上时它会中断。

我得到的警告是:

警告:在第 124 行的 /home/u189255383/public_html/imageGallery/imageProcess.php 中为 foreach() 提供的参数无效。

在我的代码中,这部分是 foreach($resultObj['photos']['photo'] as $photo) 只是一个处理从请求 flickr API 获取结果的函数传入的结果的代码。

我发现它说无效只是因为 $resultObj 中没有任何内容,这就是为什么它是无效参数,但我不明白为什么它是空的。

$url = $request . $method . $sign . $apiKey . $sign . 'text=' . urlencode($input) . $sign . $per_page . $sign . $page . $i . $sign . $format;       
$result = file_get_contents($url);
$resultObj = unserialize($result);

这基本上是我在返回结果之前所做的。我试图查看$result 中是否有任何内容,但结果发现$result 已经为空,这意味着file_get_contents($url); 函数没有被执行。

【问题讨论】:

  • flickr 应该返回 json 而不是 php 序列化字符串.... 用 json_decode($result, true) 替换反序列化
  • 顺便说一句,这也不应该在本地工作。
  • 您确定您的实时服务器允许您使用带有 URL 的 file_get_contents 吗?
  • @Orangepill,我认为 flickr 返回结果的格式取决于您请求的格式。 flickr.com/services/api。你有 5 个选项,我选择 PHP 一个,其中说使用序列化 PHP 响应格式 PHP 有一个内置的序列化数据结构格式,使用 serialize() 和 unserialize() 函数。
  • @andrewsi 你的意思是“allow_url_fopen”吗?如果是这样,那么在来自实时服务器的 php.info 中它的“ON”所以我想是的?

标签: php api deployment


【解决方案1】:

尝试使用 curl。您应该检查远程服务器上是否安装了 curl:

$url = $request . $method . $sign . $apiKey . $sign . 'text=' . urlencode($input) . $sign . $per_page . $sign . $page . $i . $sign . $format;       
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
curl_close($ch);
$resultObj = unserialize($result);

【讨论】:

  • 嗨,很抱歉回复晚了,我最近很忙,所以没有尝试过您的解决方案,但我记得使用 curl 写过一些东西并尝试过,但没有成功,但我会再次使用 urs也许今晚晚些时候试一试,让你知道结果。但我认为这不是代码的问题,可能出于安全原因与主机有关?
  • 您在 apache 错误日志或其他日志文件中是否有任何错误?
  • 嗨,理查德,我得到的只是同样的旧消息“警告:在第 124 行的 /home/u189255383/public_html/imageGallery/imageProcess.php 中为 foreach() 提供的参数无效。”跨度>
猜你喜欢
  • 2019-05-05
  • 2012-07-04
  • 1970-01-01
  • 2014-11-02
  • 1970-01-01
  • 2015-07-24
  • 2023-02-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多