You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Play服务器启动遇java.nio.file.AccessDeniedException疑prod.conf密钥错误?

解答:AccessDeniedException与play.http.secret.key无关,是临时目录权限问题

首先明确说:这个java.nio.file.AccessDeniedException异常和play.http.secret.key配置错误完全无关,也不是其他凭证配置的问题。从错误日志就能直接看出问题根源:Play服务器在初始化临时文件创建器时,无法在/tmp目录下创建名为playtemp5604435787006203928的临时目录,因为没有读写权限。

具体排查和解决步骤:

  • 检查/tmp目录的权限设置
    先通过终端执行命令查看/tmp的权限:

    ls -ld /tmp
    

    正常情况下,/tmp的权限应该是drwxrwxrwt(带有粘性位t,允许所有用户读写自己创建的临时文件)。如果权限不符,执行以下命令修复:

    sudo chmod 1777 /tmp
    
  • 确认运行Play服务器的用户权限
    确保启动Play服务器的系统用户对/tmp目录有读写权限。比如如果你用普通用户启动,但/tmp被意外设置了仅root可访问,就会触发这个错误。可以切换到启动服务器的用户,尝试手动在/tmp下创建一个测试文件验证:

    touch /tmp/test-play-perm
    

    如果这个命令失败,说明用户确实没有权限,需要调整用户权限或者切换到有权限的用户启动服务。

  • 自定义Play的临时目录
    如果无法修改系统/tmp的权限(比如受限于运维政策),可以在prod.conf中指定一个自定义的临时目录,要求这个目录已存在且运行服务器的用户有完全读写权限:

    play.temporaryFile.path = "/opt/play-app/temp"
    

    配置后记得创建这个目录并设置正确权限:

    mkdir -p /opt/play-app/temp
    chown your-play-user:your-play-group /opt/play-app/temp
    chmod 755 /opt/play-app/temp
    
  • 排查系统级别的权限限制
    如果上面的步骤都无效,可能是SELinux、AppArmor这类安全模块阻止了Play进程访问/tmp。可以临时关闭SELinux测试(仅用于排查):

    sudo setenforce 0
    

    如果重启服务器后正常了,就需要为Play进程添加SELinux规则,或者联系运维人员调整安全策略。

内容的提问来源于stack exchange,提问作者abby

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:08:17