【问题标题】:Silverstripe CMS gives File size zero errorSilverstripe CMS 提供文件大小零错误
【发布时间】:2017-06-07 13:33:16
【问题描述】:

我设计了一个包含上传附件的页面......一个图像和另一个 PDF。 数据是在数据库中创建的,但是,当尝试上传任一类型的文件时,我会收到服务器错误“文件大小为零字节”。 对该论坛的搜索产生的条目表明这是站点资产文件夹或资产/上传文件夹的权限问题。我已经检查了两者并且权限是正确的。 在其他平台上的搜索似乎表明文件大小问题来自 PHP5.6 php.ini 文件设置。两者都是正确的,并且设置为远高于 8Mb 默认值的值。 Apache2 日志如下所示:

[Tue Jun 06 15:11:57.167558 2017] [:error] [pid 26971] [client 192.168.1.73:50192] PHP Warning:  mkdir(): Permission denied in /var/www/html/ss/framework/filesystem/Filesystem.php on line 53, referer: http://192.168.1.70/ss/index.php/admin/pages/edit/show/23
[Tue Jun 06 15:11:57.170810 2017] [:error] [pid 26971] [client 192.168.1.73:50192] PHP Warning:  copy(/var/www/html/ss/assets/Uploads/news-attachments/the-satern-ring.pdf): failed to open stream: Permission denied in /var/www/html/ss/framework/filesystem/Upload.php on line 207, referer: http://192.168.1.70/ss/index.php/admin/pages/edit/show/23

此代码似乎也表明存在权限问题。文件夹的所有者都为root 组为root 和drw-rw----,文件可以手动上传,但不能通过CMS。

那么我现在在哪里看?

环境: SS v3.6.0 主题引导 操作系统 Linux Mint 18.1 阿帕奇 2.4 PHP 5.6

【问题讨论】:

  • The folders all have the owner as root group as root:除非您的 Web 服务器以 root 身份运行,否则您需要将文件夹 chown 指向 Web 服务器用户所在的用户/组(例如 apachenginx ) 可以访问。如果它们归根用户所有,则这些用户不太可能拥有所需的访问权限。
  • 明白。但是,这种权限安排是产生此问题的原因。如原始帖子中所述,所有文件夹都归 root 和 root 组所有。此时唯一的用户是 CMS 中的默认管理员用户。我认为还有一个问题不是很明显。

标签: error-handling content-management-system silverstripe


【解决方案1】:

当框架无权将文件写入服务器时,可能会发生这种情况。如果是这种情况,当我们通过 CMS 上传图像时,无法将文件写入资产,并且 CMS 会返回 "File size zero error"。该网站也无法合并文件(例如 JavaScript 和 CSS 文件),也无法创建新的重采样图像。

为了帮助调查此问题,我们可以运行 SilverStripe 安装向导。安装向导将通知我们阻止 SilverStripe 正常运行的问题。

要运行安装向导,我们访问http://www.example.com/install.php

install.php 通常在站点安装后会被删除,因此如果丢失,我们需要替换它。我们可以从 github 下载文件。这是 SilverStripe 3.6 的 install.php 文件:https://github.com/silverstripe/silverstripe-installer/blob/3.6/install.php

下载后,我们将其上传到我们网络服务器的根目录。完成后,我们可以访问install.php URL。

这是一个屏幕截图,显示了安装向导输出的文件权限问题警告示例:

我们现在要做的是修复安装向导报告的所有警告。

如果这是一个共享托管环境,我们可能无法自行解决这些问题。在这种情况下,我们应该能够将install.php 链接发送给托管支持,要求他们解决问题。

一旦所有问题都得到解决,网站应该可以正常运行。完成后请务必删除install.php

【讨论】:

  • 3dgoo 谢谢。我想我在之前的帖子中已经提到过这个。安装在安装时没有显示任何权限问题。在能够使用 CMS 之前,我会纠正这些问题。我在反复试验中尝试了很多方法来找到解决方案 - 包括将所有者/组更改为与 Web 服务器(www-data)相同...没有改变结果。默认管理员是此时唯一的用户,CMS 执行所有其他功能。新页面被创建,并且可以在 CMS 之外手动上传。这个问题只存在于 CMS 中。
  • 您所描述的内容与我上周在客户网站上遇到的问题相同。我的问题是为 Web 服务器设置的文件所有者不正确,导致 SilverStripe 没有编辑任何文件的权限。这是由于网站正常运行多年后,网络托管突然更改了服务器设置。如果您注意到这些问题后还没有检查install.php,我建议您上传文件并检查它是否报告了任何问题。
  • 这不完全一样。 CMS 的所有其他功能都可以正常工作。我可以创建和编辑文档,例如新闻和新页面。它们存储在数据库中......而不是文件系统。它似乎只影响文件系统存储,就像资产文件夹中上传的图像和文档一样。并且以一种特殊的方式。详情在上一篇文章中都有。
  • 当我说"SilverStripe did not have permissions to edit any files" 时,我指的是任何文件系统文件。 SilverStripe 仍然可以与数据库一起使用。因此它仍然可以在 CMS 中创建、编辑和删除页面和数据。它只是无法将任何文件写入文件系统。
猜你喜欢
  • 1970-01-01
  • 2020-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多