概述
我正在使用带有图片上传功能的Laravel 4.2。我把它设置在Homestead上,但最近我删除了Nginx并用Apache服务该站点(由于需要使用Server Sent Events)。
在我从Nginx迁移到Apache之前,文件上传功能正常。它在使用Apache的登台服务器上也可以正常工作。
错误
我正在使用Intervention图像库来处理图片上传。当我尝试上传文件时,我在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
,创建一个名为web
的新组{ {1}}并将所有者组更改为(基本上this answer中的所有内容),但仍然无效。
目录肯定存在,就像我提到的那样,它在迁移到Apache之前有效(我不完全确定它是否相关,但似乎很可能)。
我的www-data
也是空的。
登台服务器工作正常,但我不想在配置生产服务器时遇到同样的问题。我想解决这个问题并更加了解它,以便我能够解决它,如果我将来遇到它的话。为什么会发生这种情况,我该怎样做才能进一步修复/调试?
示例文件夹权限
/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
。
答案 0 :(得分:1)
尝试修改Vagrantfile
以在Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
块结束前包含此行:
config.vm.synced_folder "/path/to/laravel/app", "/home/vagrant/projects/projectname", :owner => "www-data", :group => "www-data", :mount_options => ["dmode=775", "fmode=664"]
字符串"/path/to/laravel/app"
必须指向你在Vagrant机器外工作的目录。这应该强制文件所有者和权限是您为所有项目文件指定的文件所有者和权限(因此他们不会被 vagrant 覆盖)。进行更改后,您需要重新启动VM。
答案 1 :(得分:0)
你是如何做chown
的?它应该是
chown USERNAME GROUP -R /path/to/file