我正在生产中的错误,导致我使用Rails和Carrierwave上传到亚马逊EC2的图像。
该应用程序完美的作品我的本地开发服务器上,但在生产中我得到这个错误
Completed 500 Internal Server Error in 6319ms
Errno::EPERM (Operation not permitted - /FILE/PATH/TO/IMAGE/DESTINATION):
我检查,以确保该目标文件拥有所有正确的权限。 这是上传目录,这一点我确信,整个目录是可读,可写和可执行的任何人。
** [] lrwxrwxrwx. 1 foo rvm 50 Oct 3 10:53 uploads
任何人都知道怎么回事?
这是由权限问题引起的。 我们的Rails应用程序使用Amazon EC2上,Capistrano的部署和多级扩展生产和分期环境。
之前,我们搬到了多级扩展的贡献者之一所拥有的整个Rails应用程序,让他打电话“富”。 一旦我们实现了多级,我们决定将整个应用程序使用名为“APPUSER”一个全球性的用户。 问题是,许多上传仍由FOO拥有。 这是造成写的问题。
所有上传到正确的用户和组的更改所有权固定的问题。
你检查carrierwave的cache_path的权限? 默认情况下,它的公共/上传的/ tmp /。
你检查carrierwave的config.permissions和config.directory_permissions? 它们的默认值分别为0666和0777,这可能会或可能不会足以允许上传取决于服务器的设置方式。
文章来源: Errno::EPERM (Operation not permitted FILE_PATH) when uploading image with Rails, Carrierwave, Amazon EC2