errno :: eacces:上传jpg时权限被拒绝@ rb_sysopen

问题描述

我正在开发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并打印了照片的路径。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...