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 并打印了照片的路径。