errno::eacces:上传 jpg 时权限被拒绝@rb_sysopen
errno::eacces: permission denied @ rb_sysopen when uploading jpg
我正在开发 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-”,owner是我的用户,group也是我的用户。
我试图通过使用 chown -R user:user /path/to/photos
收回所有权来解决这个问题,但没有成功。
我该如何解决这个问题?
问题出在 PHOTO_DIR 常量上,因为它在 constants.rb 文件中被设置为环境变量。
PHOTO_DIR = ENV['PHOTO']
当我用目录的完整路径更改 env 变量时,一切都按预期进行。
PHOTO_DIR = '/path/to/jpg_files/'
看起来 env 变量没有加载到 ~/.bashrc 文件中,但我尝试了 echo $PHOTO
并打印了照片的路径。
我正在开发 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-”,owner是我的用户,group也是我的用户。
我试图通过使用 chown -R user:user /path/to/photos
收回所有权来解决这个问题,但没有成功。
我该如何解决这个问题?
问题出在 PHOTO_DIR 常量上,因为它在 constants.rb 文件中被设置为环境变量。
PHOTO_DIR = ENV['PHOTO']
当我用目录的完整路径更改 env 变量时,一切都按预期进行。
PHOTO_DIR = '/path/to/jpg_files/'
看起来 env 变量没有加载到 ~/.bashrc 文件中,但我尝试了 echo $PHOTO
并打印了照片的路径。