Laravel 10中无法修改public_path()路径求助
解决Laravel 10无法修改public_path()路径的问题
你的问题出在绑定path.public的方式和时机上,Laravel默认的绑定不会被bind()方法覆盖,同时需要确保绑定的路径正确。以下是几种可行的解决方案:
方案1:改用instance()强制覆盖绑定
在你的index.php中,将bind()替换为instance()——instance()会强制替换容器中已有的绑定,而bind()在已有绑定存在时不会生效:
$app = require_once __DIR__ . '/../../../File Web/mmteknik/bootstrap/app.php'; // 替换bind为instance $app->instance('path.public', __DIR__);
先确认__DIR__的输出是否符合预期,可以临时添加var_dump(__DIR__); exit;查看路径是否是/home/u15xxxx/public_html/subdomain/mmteknik/public,如果不是,直接手动指定绝对路径:
$app->instance('path.public', '/home/u15xxxx/public_html/subdomain/mmteknik/public');
方案2:在bootstrap/app.php中提前设置
打开bootstrap/app.php,在返回$app之前添加绑定代码,这样绑定时机更早,不会被后续初始化逻辑覆盖:
$app = Illuminate\Foundation\Application::configure(basePath: dirname(__DIR__)) ->withRouting( web: __DIR__.'/../routes/web.php', commands: __DIR__.'/../routes/console.php', health: '/up', ) ->withMiddleware(function (Illuminate\Foundation\Configuration\Middleware $middleware) { // }); // 添加这行代码绑定public路径 $app->instance('path.public', '/home/u15xxxx/public_html/subdomain/mmteknik/public'); return $app;
方案3:通过环境变量配置(更灵活)
在项目根目录的.env文件中添加自定义的public路径:
PUBLIC_PATH=/home/u15xxxx/public_html/subdomain/mmteknik/public
然后在bootstrap/app.php中读取环境变量并绑定:
// ... 原有代码 ... $app->instance('path.public', env('PUBLIC_PATH', $app->path('public'))); return $app;
最后一步:清除缓存
修改完成后,运行以下命令清除Laravel缓存,确保新配置生效:
php artisan config:clear php artisan cache:clear
内容的提问来源于stack exchange,提问作者Bayu Febriyono P
相关产品推荐
相关产品推荐

