丢失的文件 - Elgg 和数据库

Missing files - Elgg and Databases

我正在尝试帮助一位朋友修复他使用 Elgg 开发的应用程序。我熟悉 PHP 但对 Elgg 完全陌生。

长话短说,有两个看似随机发生的主要问题:

  1. 用户有时(大约百分之一)上传文件然后文件消失。
  2. 以大致相同的速度(100 个中的 1 个)即使文件成功显示在数据库中,有时甚至几周后它仍然会消失。

我考虑过通过日志来尝试找到问题的根源,但是在任何给定时间都有几十个人可以使用它和数百个文件(音频、图像、pdf、视频等) ) 可以在任何一天上传,甚至不知道要查找什么。

找出这个 Elgg 项目中这些看似随机的错误出了什么问题的更明智的方法是什么,或者有人对可能的问题有任何见解吗?

非常感谢您的帮助!

首先要做的是在服务器错误日志中查找错误和警告,例如:

cat path-to-your-error-log | grep Error

这样的错误应该很少见,所以应该很容易缩小范围。

假设链接到文件的页面完好无损(因此实体正确存储在数据库中)可能是文件太大但应用程序没有正确注册错误 - 检查max_file_size in php.ini 并查找问题与文件大小之间的相关性。此类错误应显示在服务器错误日志中。

我们过去也遇到过文件系统错误或文件权限更改的问题,这些问题即使在文件最初上传成功后也无法访问文件。确保文件本身确实存在,并且 Elgg 数据目录中的权限没有问题。如果不是,请修复磁盘。此类错误可能只会显示为警告,因此更难发现。

大多数版本的 Elgg 可能出现的另一个问题是服务器时区发生变化,因为文件存储在根据其所有者的首次登录日期命名的目录中。如果服务器的时区发生变化,Elgg 不够聪明,无法知道目录结构也必须改变。您可以使用 date_default_timezone_set().

在 engine/settings.php 中明确设置时区