我刚刚在 Ubuntu 12.04 上安装了 StatusWolf 0.8.8,运行 Apache 2.2.22 和 PHP 5.4.23。
我使用以下方法检索了最新的 Git 源代码:
git clone https://github.com/box/StatusWolf.git
并按照此处的安装说明进行操作:
https://github.com/box/StatusWolf/wiki/Installation
我可以登录,但无法创建任何图表。在调查时,我在 Apache 日志中发现 URL 路径中有“/undefined/”的条目。例如,当我登录时,选择 Dashboard,然后选择菜单项 Dashboard / Add Widget / Graphing Widget,会生成以下 Apache 访问日志条目:
192.168.100.110:9653 192.168.100.102 - - [08/Jan/2014:13:27:09 -0800] "POST /undefined/api/get_saved_searches HTTP/1.1" 200 1755 "http://192.168.100.110:9653/dashboard" "Mozilla/5.0 (Windows NT 5.2; rv:14.0) Gecko/20100101 Firefox/14.0.1"
192.168.100.110:9653 192.168.100.102 - - [08/Jan/2014:13:27:09 -0800] "GET /undefined/app/js/lib/bootstrap-datetimepicker.js HTTP/1.1" 200 1755 "http://192.168.100.110:9653/dashboard" "Mozilla/5.0 (Windows NT 5.2; rv:14.0) Gecko/20100101 Firefox/14.0.1"
注意两个 URL 路径中的“/undefined/”前缀。这使我相信请求可能是由 GUI 使用未初始化的变量构造的。但是,日志条目中的返回码是 200,表明 Apache 确实提供了一些服务。
我的虚拟主机定义如下(使用安装说明中的示例):
Listen 9653
<VirtualHost *:9653>
DocumentRoot /var/www/StatusWolf/
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
</VirtualHost>
这是 .htaccess 重写规则的问题吗?
我还应该在哪里寻找配置问题?
感谢您的帮助!
编辑
我修改了 index.php 以在 SWRouter 对象被实例化之前记录 URI:
error_log("Instantiating SWRouter with URI " . $_SERVER['REQUEST_URI'] . "\n", 3,
"/var/log/statuswolf/log_2014-01-08.txt");
$router = new SWRouter($_SERVER['REQUEST_URI']);
这表明 URI 确实包含“/undefined/”前缀,可能是由重写规则生成的:
Instantiating SWRouter with URI /undefined/api/get_saved_searches
Instantiating SWRouter with URI /undefined/app/js/lib/bootstrap-datetimepicker.js
因此,Web 服务器配置和重写规则肯定有问题。我会继续调查。
我还将这个问题发布到了 StatusWolf 的 GitHub 站点,开发人员刚刚回复了我。问题的原因是我使用的是一个非常旧的浏览器: