问题描述
我正在开发Rails应用程序,尝试将照片上传到服务器时遇到问题,显示错误消息。在日志文件中,我出现错误:“ Errno :: EACCES(权限被拒绝@ @ rb_sysopen-/photo.jpg”。问题发生在“ File.open(...)”行上
我的上传方法:
def upload_photo
logger.info(params.to_s)
logger.info(params[:file].to_s)
photo = params[:file]
filename = photo.instance_variable_get(:@headers).to_s.match(/filename="(.*)"/).captures[0]
File.open("#{PHOTO_DIR}/#{photo.original_filename}",'wb') do |file|
file.write(photo.read)
end
respond_to do |format|
format.html {
render :text => 'File uploaded.'
}
end
end
要存储照片的文件夹上的权限是“ drw-rw-rw-”,所有者是我的用户,组也是我的用户。
我试图通过使用chown -R user:user /path/to/photos
收回所有权来解决此问题,但没有用。
我该如何解决?
解决方法
问题在于PHOTO_DIR常量,因为它已在constants.rb文件中设置为env变量。
PHOTO_DIR = ENV['PHOTO']
当我用目录的完整路径更改env变量时,一切都按预期工作。
PHOTO_DIR = '/path/to/jpg_files/'
似乎env变量未加载到〜/ .bashrc文件中,但是我尝试了echo $PHOTO
并打印了照片的路径。