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 而无法进入图形界面
我装Oracle VM VirtualBox,用的是linux-ubuntu,但是装完之后,把ubuntu导入之后运行,不成功,提示如图,
Vm虚拟机上,ubuntu8.04 linux插入u盘后,出现mass storage Device,请问该驱动再哪可以下?