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

Symfony 4.4修改public文件夹路径解决No input file specified报错

Symfony 4.4 自定义公共目录为app/web/frontend 可行解决方案

1. 修正composer.json配置

打开项目根目录的composer.json文件,修改extra节点下的公共目录参数:

{
    "extra": {
        "public-dir": "app/web/frontend"
    }
}

修改完成后执行命令使配置生效:
composer dump-autoload

2. 迁移并修正前端控制器文件

  • 将原app/public目录下的所有文件(包括index.php、.htaccess、静态资源入口文件等)全部复制到app/web/frontend目录下
  • 打开app/web/frontend/index.php,修正路径引用适配新的目录层级,示例修正代码:
// 从app/web/frontend向上回溯3层定位到项目根目录,引入自动加载文件
require dirname(__DIR__, 3).'/vendor/autoload.php';

// 内核初始化代码保持原有逻辑即可,路径修正后内核可正常加载配置
$kernel = new Kernel($_SERVER['APP_ENV'], (bool) $_SERVER['APP_DEBUG']);

3. 同步修正web服务配置

框架侧配置完成后必须同步修改web服务器的站点根目录指向,否则服务会仍然从默认目录读取前端控制器:

  • Nginx配置:找到对应站点的server配置块,修改root参数:
server {
    root /你的项目绝对路径/app/web/frontend;
    # 其余rewrite、PHP解析配置保持Symfony官方推荐配置即可
}
  • Apache配置:修改虚拟主机配置中的DocumentRoot参数:
DocumentRoot "/你的项目绝对路径/app/web/frontend"
<Directory "/你的项目绝对路径/app/web/frontend">
    AllowOverride All
    Require all granted
</Directory>
  • 本地Symfony开发服务器:启动时指定公共目录参数:
    symfony server:start --public-dir=app/web/frontend

4. 修正框架配置并清理缓存

  • 打开config/packages/framework.yaml,修正静态资源路径配置:
framework:
    assets:
        public_dir: '%kernel.project_dir%/app/web/frontend'
  • 执行缓存清理命令,确保所有配置生效:
    php bin/console cache:clear
  • 确认app/web/frontend目录已赋予web服务器运行用户(如www-data、apache)可读权限

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 14:39:05