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

Laravel 11如何迁移public目录?修改index.php后运行报错求助

Laravel 11 迁移Public目录至根目录的解决方案

问题背景

期望的目录结构:

  • public(根目录下,作为对外访问入口)
  • program(根目录下,存放Laravel核心文件及其他所有资源)

已修改public/index.php指向program目录的核心文件,但运行php artisan serve时出现错误:

Symfony\Component\Process\Exception\RuntimeException

The provided cwd "C:\wamp64\www\my-project\program\public" does not exist.

需修改的内容及操作步骤

1. 配置Laravel应用的公共目录路径

打开program/bootstrap/app.php,在应用实例创建代码中添加usePublicPath配置,指定根目录下的public路径:

return Application::configure(basePath: dirname(__DIR__))
    ->usePublicPath(__DIR__.'/../../public') // 新增这一行,指向根目录的public
    ->withRouting(
        web: __DIR__.'/../routes/web.php',
        commands: __DIR__.'/../routes/console.php',
        health: '/up',
    )
    ->withMiddleware(function (Middleware $middleware) {
        // 保持原有中间件配置
    })
    ->withExceptions(function (Exceptions $exceptions) {
        // 保持原有异常配置
    })->create();

2. 指定公共目录启动服务

进入program目录,执行artisan serve时通过--public参数明确指定根目录下的public目录:

php artisan serve --public=../public

如果嫌每次输入参数麻烦,可以在program目录下创建批处理文件(Windows)或shell脚本(Linux/Mac),把上述命令写入其中,一键启动服务。

3. 验证静态资源与存储路径(可选)

  • 静态资源:在视图中测试{{ asset('css/app.css') }},确认生成的路径为http://localhost:8000/css/app.css,确保静态资源能正常加载。
  • 文件存储:打开program/config/filesystems.php,确认public磁盘的root配置为public_path('storage'),该配置会自动指向根目录public下的storage文件夹,无需额外修改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 10:55:19