【问题标题】:Detecting why files are being deleted from the server检测文件从服务器中删除的原因
【发布时间】:2012-12-15 04:46:06
【问题描述】:

我正在开发 LAMP/php 上的文档管理应用程序,它允许您向我们的服务器添加和删除 PDF。它工作得很好,除了一个烦人的问题——你周一上传的文件可能会在周二消失,我无法诊断出原因。似乎整个目录都被删除了 - 我怀疑某个地方有一个不完整的字符串被传递给一个 unlink 或其他东西,但我已经禁用了我能找到的从服务器中删除文件的每一行代码,我仍然遇到麻烦。如何诊断这些随机消失文件的原因?是否有任何实用程序可以用来记录对文件或目录的任何尝试删除或更改?

【问题讨论】:

  • 更改文件夹的权限并查看错误开始出现的位置。
  • 这里有一个链接可以帮助你:linuxos4all.blogspot.com/2010/11/…
  • @pzirkind:如果文件被 PHP 脚本删除,这将不起作用。
  • 它可能是您的应用程序之外的东西,例如正在运行的 cron 会修剪某些目录,但只有当您不是单独在服务器上时才有可能发生这种情况。

标签: php linux ubuntu lamp delete-file


【解决方案1】:

理想情况下,您希望找到您的错误...

find codebase/ -type f -exec grep -il "unlink" '{}' \;

alertativley 如果您想要一个 hacky 修复,请更新您的 apache 用户以拥有一个 umask,使其能够创建文件,但不能删除它们...

sed -i 's/^\(start|[a-z|-]*)\)/\1\n    umask 0222/' `which apachectl`

这也会在错误日志中生成权限被拒绝错误...

【讨论】:

  • find codebase/ -type f | xargs grep -sl "unlink " 更容易记住......只是我的 3.14 美分。
  • @Michael 你介意解释一下 find 命令的作用以及它将如何帮助解决所提出的问题。
猜你喜欢
  • 2019-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-01
  • 2023-03-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多