前几天,我的基于 Raspbian 的 ownCloud 服务器遭遇了断电。从那以后,我就无法使用 ownCloud:在浏览器中,我只看到一个空白页,似乎没有完成加载,DAVdroid 和桌面同步客户端抱怨收到 HTTP 错误 500(内部服务器错误)。
我甚至无法进入 ownCloud 管理界面。系统日志中没有任何可疑条目。这是怎么回事?
答案1
有关 ownCloud 故障排除的通用指南位于官方网站。
ownCloud 日志文件就我的情况而言是/var/www/owncloud/data/owncloud.log
空的。
PHP5 错误日志默认情况下是禁用的(至少在 Raspbian 上)。您需要在 中/etc/php5/apache2/php.ini
通过设置log_errors
为 On 并在 中设置日志文件的路径来启用它们error_log
。之后,您需要重新启动 Web 服务器以使更改生效 — 我跳过了整个步骤。
Apache 错误日志存储在/var/log/apache2/error.log
(在 Raspbian 上 — 路径可能因发行版而异)。日志在重新启动时或每 24 小时轮换一次,前一个日志被重命名为error.log.1
,再前一个日志被 gzip 压缩并命名error.log.2.gz
,依此类推,10 个以上的日志。可以像这样查看它们:
sudo less /var/log/apache2/error.log
sudo less /var/log/apache2/error.log.1
sudo zcat /var/log/apache2/error.log.2.gz | less
(请注意,gzip 压缩日志的命令不同)。
Apache 错误日志有很多类似这样的行:
[2017 年 3 月 4 日星期六 14:32:15.682697] [:错误] [pid 12325] [客户端 10.15.1.19:56016] PHP 解析错误:语法错误,意外的“41”(T_LNUMBER),预期为“)”,位于 /var/www/owncloud/3rdparty/phpseclib/phpseclib/phpseclib/Crypt/Hash.php 第 385 行
进一步挖掘历史,事实证明这个错误在断电后系统第一次启动时就开始出现,这暗示着文件系统损坏。
有问题的文件似乎是 ownCloud 安装的一部分,因此我认为最简单的方法是重新安装 ownCloud 包(我选择了 deb 路径)。
由于 ownCloud 已发布了新版本 9.1.4(我的服务器仍使用 9.1.3),因此重新安装失败,因为原始包在旧位置不再可用。
因此,我决定冒险并运行升级,我认为这将以相同的方式恢复丢失的文件。(重新安装可能也有效,并且可以更快地恢复服务。)
升级后,至少 ownCloud 向我发出了一条通知,说它处于维护模式。以下命令完成了升级:
sudo -u www-data php /var/www/owncloud/occ maintenance:mode --off
sudo -u www-data php /var/www/owncloud/occ upgrade
(请注意,必须提供路径occ
,否则将找不到)。
之后,我仍然需要使用管理员帐户登录,转到应用程序并重新启用我的应用程序。
服务器又恢复了。