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

如何在cPanel中访问public_html目录 解决Node.js应用multer上传报错

解决方案

  • 第一步:修正路径引用逻辑,避免受进程工作目录影响
    cPanel 运行 Node.js 应用时的工作目录不一定是你的项目根目录,multer 配置的相对路径会相对于进程工作目录解析,而不是代码文件所在目录。
    1. 首先在代码中打印当前工作目录确认路径:console.log('当前工作目录:', process.cwd()),查看输出是否和你预期的项目目录一致。
    2. 建议使用path模块拼接绝对路径,和当前脚本位置绑定,示例代码如下:
    const path = require('path')
    const multer = require('multer')
    // 此处的相对路径根据你的脚本文件和assets目录的实际位置调整
    const uploadDir = path.resolve(__dirname, '../../public_html/assets')
    const upload = multer({ dest: uploadDir })
    
  • 第二步:验证目录权限配置
    cPanel 中 Node.js 进程默认以你的 cPanel 账户身份运行,需要保证目标目录及上级目录有对应读写权限:
    1. 登录cPanel的文件管理器,右键查看/home/xxx/public_html/assets目录的权限,确保权限值至少为755,若仍报错可临时调整为775验证是否是权限问题。
    2. 同时检查上级目录/home/xxx/public_html的权限,同样需要保证至少为755,避免进程无法进入上级目录访问子文件夹。
  • 第三步:添加目录自动创建逻辑,规避大小写/拼写问题
    Linux 系统大小写敏感,本地 Windows/macOS 环境对大小写不敏感,容易出现本地路径正常、服务器路径不匹配的问题。且 multer 不会自动创建不存在的目录,建议在服务启动时主动检测并创建目标目录:
const fs = require('fs')
const uploadDir = path.resolve(__dirname, '../../public_html/assets')
// recursive设为true会自动创建所有不存在的上级目录
if (!fs.existsSync(uploadDir)) {
  fs.mkdirSync(uploadDir, { recursive: true, mode: 0o755 })
}
  • 第四步:重启应用生效
    所有代码、权限配置修改完成后,进入cPanel的「Node.js 应用」管理页,找到对应应用点击「重启」,再测试上传功能即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 13:39:02