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

Laravel在cPanel中Telegram通知图片路径配置问题求助

cPanel环境下项目与public目录分离后的图片路径配置方案

方案1:手动指定public绝对路径

针对Laravel项目,修改项目根目录的bootstrap/app.php,在Application实例化后添加public路径配置:

$app = new Illuminate\Foundation\Application(
    $_ENV['APP_BASE_PATH'] ?? dirname(__DIR__)
);

// 替换为你cPanel账户的public_html绝对路径
$app->usePublicPath('/home/你的cPanel用户名/public_html');

cPanel的绝对路径可通过文件管理器查看(顶部会显示当前路径),或通过终端执行pwd命令获取。配置后public_path()会直接指向public_html目录,web请求和Cron Job都能正常读取图片。

方案2:通过环境变量灵活配置

  1. 在项目根目录的.env文件中添加自定义环境变量:
APP_PUBLIC_PATH=/home/你的cPanel用户名/public_html
  1. 修改bootstrap/app.php读取该变量:
$app = new Illuminate\Foundation\Application(
    $_ENV['APP_BASE_PATH'] ?? dirname(__DIR__)
);

if (isset($_ENV['APP_PUBLIC_PATH'])) {
    $app->usePublicPath($_ENV['APP_PUBLIC_PATH']);
}

这种方式可实现本地与线上环境分离:本地不设置APP_PUBLIC_PATH时,自动使用项目内默认的public目录;线上cPanel环境单独配置即可。

方案3:Cron Job命令临时指定路径

若不想修改项目代码,可直接在Cron Job的执行命令中注入环境变量:

* */1 * * * cd /home/你的cPanel用户名/AryaBMS && APP_PUBLIC_PATH=/home/你的cPanel用户名/public_html php artisan schedule:run >> /dev/null 2>&1

每次Cron任务执行时,临时让public_path()指向public_html目录,不影响web端的路径配置。

注意事项

  • 权限检查:确保public_html下的图片文件权限为644、目录权限为755,避免因权限不足导致读取失败。
  • 路径验证:可通过执行php -r "echo public_path();"命令,验证public_path()是否输出正确的public_html绝对路径。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 14:20:41