用 composer create-project 创建 Symfony 项目,因其一次性拉取完整骨架(含路由、内核、目录结构等),而 global require 只装零散组件,无法启动;常用方式有 skeleton(API)、website-skeleton(Web)、指定版本如 ^6.4。

直接用 composer create-project 就能生成可运行的 Symfony 项目,不需要单独“安装框架”——Symfony 不是全局安装的库,而是按项目依赖引入的。
为什么不能用 composer global require symfony/symfony
这是最常见的误解。Symfony 核心组件(如 symfony/http-kernel)确实能全局装,但那只是零散包,没法直接跑起来。真正可启动的项目必须包含:路由配置、内核类、环境目录(config/、src/、public/)、以及 composer.json 中预设的自动加载和脚本。这些只有 create-project 能一次性拉下来。
-
create-project实际上是克隆官方 skeleton 仓库(如symfony/skeleton或带 Web 的symfony/website-skeleton),再执行composer install - 全局 require 的
symfony/console或symfony/framework-bundle只是单个组件,没骨架、没命令行入口、没bin/console - 强行拼凑会导致
Class not found: App\Kernel或No routes found这类启动失败
用 create-project 创建项目的 3 种常用方式
根据需求选骨架,不是版本越新越好,也不是功能越多越合适:
- 纯 API / 微服务场景 →
composer create-project symfony/skeleton myapi(最小依赖,无 Twig、无 Web Server 配置) - 传统 Web 应用(含模板、表单、Doctrine)→
composer create-project symfony/website-skeleton myweb - 想指定 Symfony 版本(比如要 v6.4 LTS)→
composer create-project symfony/website-skeleton:^6.4 myapp
注意:website-skeleton 默认带 symfony/web-server-bundle(已弃用),但不影响使用;现代推荐用 symfony server:start,它由 symfony/cli 提供,需单独安装。
创建后立刻能跑起来的关键检查点
项目生成完别急着写代码,先确认基础环境是否就绪,否则后续报错会掩盖真实问题:
- 检查 PHP 版本:Symfony 6.x 要求 PHP 8.1+,运行
php -v确认,低于则报Your requirements could not be resolved - 检查
public/index.php是否存在且可读——这是 Web 入口,缺失说明 skeleton 拉取失败或被误删 - 运行
php -S localhost:8000 -t public测试内置服务器能否响应;若报Failed to open stream: No such file,大概率是public/下没index.php或index.php里引用了不存在的autoload.php - 首次运行
php bin/console server:start前,确保已安装 Symfony CLI(curl -sS https://get.symfony.com/cli/installer | bash),否则提示command not found
最常被跳过的一步:运行 composer install 后,var/cache/ 和 var/log/ 目录权限没设对,Linux/macOS 下容易卡在 “The stream or file … could not be opened” ——这不是代码问题,是目录不可写。直接 chmod -R 777 var/(开发阶段)比反复查 SELinux 或 umask 更快定位。










