我设计了一个包含上传附件的页面...一张图片和另一张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主题引导程序 OS Linux Mint 18.1 Apache 2.4 PHP 5.6
答案 0 :(得分:2)
当框架没有将文件写入服务器的权限时,可能会发生这种情况。如果是这种情况,当我们通过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
网址。
以下是显示安装向导输出的文件权限问题警告示例的屏幕截图:
我们现在要做的是修复安装向导报告的所有警告。
如果这是共享托管环境,我们可能无法自行解决这些问题。在这种情况下,我们应该能够将install.php
链接发送给托管支持,要求他们解决问题。
修复所有问题后,网站应正常运行。完成后请务必删除install.php
。