【发布时间】:2015-04-10 16:53:51
【问题描述】:
概述
我正在使用具有图像上传功能的 Laravel 4.2。我在 Homestead 上设置了它,但最近我删除了 Nginx 并使用 Apache 来服务该站点(由于需要使用服务器发送事件)。
在我从 Nginx 迁移到 Apache 之前,文件上传功能运行良好。它也可以在带有 Apache 的登台服务器上正常工作。
错误
我正在使用干预图像库来处理图像上传。当我尝试上传文件时,我的laravel.log 文件中出现以下内容:
Can't write image data to path (/home/vagrant/projects/projectname/public/assets/pics/profile/photos/f55f0ae2-2d1a-4fdd-b9be-39d8a509baa3.jpg)
我的尝试
我以为这只是一个简单的权限错误。我已经将chmod 我的asset 目录更改为0777,将目录所有者更改为www-data,使用www-data 创建一个名为web 的新组并将所有者组更改为那个, (基本上this answer 中的所有内容以及更多内容)仍然无法正常工作。
该目录确实存在,并且就像我提到的那样,它在迁移到 Apache 之前就已经工作了(我不完全确定它是否相关,但似乎很有可能)。
我的/var/log/apache2/error.log 也是空的。
暂存服务器工作正常,但我不希望在配置生产服务器时遇到同样的问题。我想解决这个问题并更多地了解它,以便将来遇到它时可以解决它。为什么会发生这种情况,我该怎么做才能进一步修复/调试?
文件夹权限示例
drwxr-xr-x 1 vagrant vagrant 272 Jan 26 11:07 assets/pics
drwxr-xr-x 1 vagrant vagrant 170 Jan 26 10:11 assets/pics/defaults
drwxr-xr-x 1 vagrant vagrant 714 Jan 26 14:10 assets/pics/forums
drwxr-xr-x 1 vagrant vagrant 646 Jan 26 14:10 assets/pics/forums/thumbs
drwxr-xr-x 1 vagrant vagrant 170 Jan 20 18:02 assets/pics/gallery
drwxr-xr-x 1 vagrant vagrant 3026 Jan 26 13:24 assets/pics/messages
drwxr-xr-x 1 vagrant vagrant 2992 Jan 26 13:24 assets/pics/messages/thumbs
drwxr-xr-x 1 vagrant vagrant 136 Jan 8 17:27 assets/pics/profile
drwxr-xr-x 1 vagrant vagrant 136 Feb 10 14:48 assets/pics/profile/photos
drwxr-xr-x 1 vagrant vagrant 102 Feb 10 14:51 assets/pics/profile/photos/thumbs
由于某种原因,所有者/组仍然是 vagrant,即使我 chown 他们。我试过sudo chown 和sudo -s。
【问题讨论】:
-
只是为了确保您在
assets目录上运行chmod和/或chgrp时确实使用了-R(递归)选项?因为子目录也需要相同的权限。尝试运行cd /home/vagrant/projects/projectname/public && ls -dl `find assets/ -type d`并发布输出。 -
你检查过具体的文件夹权限吗?
/home/vagrant/projects/projectname/public/assets/pics/profile/photos/在我认为递归chmod已更改其所有子目录的权限之前,我遇到过一个非常相似的问题,但仍有一些落后者。有时,如果另一个系统用户创建了自己的目录或文件,它也有自己不同的默认权限。如果您能找到该用户,请将 Apache 添加到其组中。 -
@Bogdan @cchapman900 我已经更新了我的问题以包含文件夹权限输出。由于某种原因,所有者仍然是
vagrant...
标签: php apache laravel nginx permissions