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

Node.js应用部署子域名后出现EACCES权限报错如何解决

Error: EACCES: permission denied, open '/opt/cpanel/ea-ruby27/root/usr/share/passenger/helper-scripts/error.log'

该报错本质是cPanel托管环境下,负责运行Node.js应用的Passenger进程没有权限写入系统默认的日志文件。主域名部署的React应用未触发该问题,是因为React为静态站点,不需要Passenger运行服务端逻辑,不会调用该系统日志路径。

解决步骤

1. 调整应用日志输出路径(最优先方案,无需服务商介入)

  • 在你的Node.js项目根目录新建logs文件夹,将该文件夹权限设置为755
  • 在项目入口文件(通常是app.js或index.js)的最顶部添加如下代码,将日志输出路径修改为你自己站点目录下的可写路径,避免写入系统级目录:
const fs = require('fs')
const path = require('path')
const logPath = path.resolve(__dirname, './logs')
// 自动创建日志目录
if (!fs.existsSync(logPath)) {
  fs.mkdirSync(logPath, { recursive: true })
}
// 重定向标准输出、错误输出到自定义日志文件
process.stdout = fs.createWriteStream(path.join(logPath, 'app.log'), { flags: 'a' })
process.stderr = fs.createWriteStream(path.join(logPath, 'error.log'), { flags: 'a' })
  • 重新部署代码到子域名对应的站点目录

2. 重启Node.js应用

  • 登录cPanel后台,进入「Setup Node.js App」功能页,找到对应子域名的应用条目,点击「Restart」按钮重启应用即可生效

3. 备选方案(上述操作无效时使用)

联系虚拟主机服务商,要求管理员调整/opt/cpanel/ea-ruby27/root/usr/share/passenger/helper-scripts/目录的权限,给你的应用运行账号开放写入权限即可。

内容的提问来源于stack exchange,提问作者Elín Ósk

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 05:12:00