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
相关产品推荐
相关产品推荐

