我刚刚在 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/”。例如,当我登录时,选择“仪表板”,然后选择菜单项“仪表板/添加小部件/图形小部件”,会生成以下 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 服务器配置和重写规则肯定存在问题。我会继续调查。
答案1
我也在 StatusWolf 的 GitHub 网站上发了这个问题,开发人员刚刚回复了我。问题的原因是我使用的浏览器非常老旧:
StatusWolf 在小部件 javascript 中使用“window.location.origin”来构建用于加载文件和进行 API 调用的 URL。您使用的是旧版本的 Firefox(14.0.1,当前版本为 26),我刚刚确认您使用的版本不支持 window.location.origin,因此 StatusWolf 内部存储 URL 的变量将其显示为“未定义”。无论如何,您可以尝试使用 Chrome,或者更新到较新的 Firefox?