PHP 方法调用导致 Ubuntu VM 出现问题

Posted

技术标签:

【中文标题】PHP 方法调用导致 Ubuntu VM 出现问题【英文标题】:PHP method call causing issues on Ubuntu VM 【发布时间】:2014-02-04 17:51:28 【问题描述】:

以下函数在本地运行良好,但在 Ubuntu VM 上调用该函数时会导致空白页。 message_room 在 HipChat.php 中正确定义(同样,它在本地按预期工作)。

require 'HipChat.php';

define('HIPCHAT_APIKEY', 'xxx');
define('HIPCHAT_NAME', 'Assets');
define('HIPCHAT_ROOM', 'Assets');

function hipchatDump ($message) 
    $hc = new HipChat\HipChat(HIPCHAT_APIKEY);
    try 
        $hc->message_room(HIPCHAT_ROOM, HIPCHAT_NAME, $message, false, 'yellow', 'text');
     catch (Exception $e) 
        echo 'Caught exception: ',  $e->getMessage(), "\n";
    

php --version 命令在每台机器上产生以下内容:

Macbook:

PHP 5.4.17 (cli) (built: Sep 12 2013 23:14:23) 
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies

Ubuntu 虚拟机:

PHP 5.5.3-1ubuntu2.1 (cli) (built: Dec 12 2013 04:24:35) 
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2013 Zend Technologies
    with Zend OPcache v7.0.3-dev, Copyright (c) 1999-2013, by Zend Technologies

try/catch 没有输出任何东西。我已将问题缩小到这一行:

$hc->message_room(HIPCHAT_ROOM, HIPCHAT_NAME, $message, false, 'yellow', 'text');

据我所知,PHP5.5 中的任何更改都不会导致基于 PHP 版本的失败。任何想法为什么这适用于一台机器而不是另一台机器?

更新

最初的问题似乎是没有安装 cURL。安装完并重启apache服务后,Apache日志文件中原来的错误消失了,但现在我看到了:

[Wed Jan 15 17:14:48.767984 2014] [:error] [pid 5886] [client 172.16.3.77:65381] PHP Fatal error:  Call to undefined function HipChat\\json_decode() in /var/www/assets/scripts/php/HipChat/HipChat.php on line 240, referer: http://myurl/

我的 Ubuntu 版本是 13.10

【问题讨论】:

您可以查看您的 Apache 日志(假设您使用的是 Apache)吗? @Scopey 这是我从 Apache 日志中得到的错误:[Wed Jan 15 17:01:31.438401 2014] [:error] [pid 27153] [client 172.16.3.77:65162] PHP Fatal error: Call to undefined function HipChat\\curl_init() in /var/www/assets/scripts/php/HipChat/HipChat.php on line 185, referer: http://myurl 我在 VM 上安装了 php5-curl,但仍然看到同样的错误。 @Scopey 请查看我的最新更新。重新启动 Apache 后,curl 错误消失了,但我现在收到一个错误,说 json_decode 也未定义 请检查***.com/questions/18239405/…,看看这是否适用于您。 (sudo apt-get install php5-json 可能会为你解决这个问题!) @Scopey 确实如此!如果您愿意,请添加答案 【参考方案1】:

答案是双重的。

先是缺少 cURL 库,然后是缺少 JSON 库。

您可以通过检查 phpinfo() 中列出的错误日志找到这些问题的错误消息。

只需安装这两个包即可解决问题:

sudo apt-get install php5-curl

sudo apt-get install php5-json

【讨论】:

以上是关于PHP 方法调用导致 Ubuntu VM 出现问题的主要内容,如果未能解决你的问题,请参考以下文章

关于win7下用VM装ubuntu 出现错误 starting load fallback graphics devices fail 而无法进入图形界面

我昨天用VM装的ubuntu,昨天还能上网,今天就不能上了

关于VM虚拟机上运行UBUNTU使用代理的问题!

迅雷在ubuntu下奔溃

我装Oracle VM VirtualBox,用的是linux-ubuntu,但是装完之后,把ubuntu导入之后运行,不成功,提示如图,

Vm虚拟机上,ubuntu8.04 linux插入u盘后,出现mass storage Device,请问该驱动再哪可以下?