安装和设置 Symfony 框架
技术要求
在创建您的第一个 Symfony 应用程序之前,您必须:
- 安装 PHP 8.2 或更高版本以及这些 PHP 扩展(在大多数 PHP 8 安装中默认安装并启用): Ctype 、 iconv 、 PCRE 、 Session 、 SimpleXML和Tokenizer ;
- 安装 Composer ,用于安装 PHP 包。
另外,安装 Symfony CLI 。这是可选的,但它为您提供了一个名为symfony有用二进制文件,它提供了在本地开发和运行 Symfony 应用程序所需的所有工具。
symfony二进制文件还提供了一个工具来检查您的计算机是否满足所有要求。打开控制台终端并运行以下命令:
symfony check:requirements
创建 Symfony 应用程序
打开控制台终端并运行以下任意命令来创建新的 Symfony 应用程序:
symfony new my_project_directory --version="7.1.*" --webapp
symfony new my_project_directory --version="7.1.*"
这两个命令之间的唯一区别是默认安装的软件包数量。 --webapp选项会安装额外的软件包,为您提供构建 Web 应用程序所需的一切。
如果您不使用 Symfony 二进制文件,请运行以下命令以使用 Composer 创建新的 Symfony 应用程序:
composer create-project symfony/skeleton:"7.1.*" my_project_directory
cd my_project_directory
composer require webapp
composer create-project symfony/skeleton:"7.1.*" my_project_directory
无论您运行哪个命令来创建 Symfony 应用程序。所有这些都将创建一个新的my_project_directory/目录,将一些依赖项下载到其中,甚至生成入门所需的基本目录和文件。换句话说,您的新应用程序已准备就绪!
设置现有的 Symfony 项目
除了创建新的 Symfony 项目之外,您还将处理其他开发人员已经创建的项目。在这种情况下,您只需要获取项目代码并使用 Composer 安装依赖项即可。假设您的团队使用 Git,请使用以下命令设置您的项目:
cd projects/
git clone ...
cd my-project/
composer install
您可能还需要自定义.env 文件并执行一些其他特定于项目的任务(例如创建数据库)。当第一次使用现有的 Symfony 应用程序时,运行此命令可能会很有用,该命令显示有关项目的信息:
php bin/console about
运行 Symfony 应用程序
在生产中,您应该安装 Nginx 或 Apache 等 Web 服务器并将其配置为运行 Symfony 。如果您不使用 Symfony 本地 Web 服务器进行开发,也可以使用此方法。
然而,对于本地开发,运行 Symfony 最方便的方法是使用symfony二进制文件提供的本地 Web 服务器。该本地服务器除其他外还提供对 HTTP/2、并发请求、TLS/SSL 和自动生成安全证书的支持。
打开控制台终端,进入新项目目录并启动本地 Web 服务器,如下所示:
cd my-project/
symfony server:start
打开浏览器并导航到http://localhost:8000/ 。如果一切正常,您将看到一个欢迎页面。稍后,当您完成工作时,通过从终端按Ctrl+C来停止服务器。
Symfony Docker 集成
如果您想将 Docker 与 Symfony 结合使用,请参阅将 Docker 与 Symfony 结合使用。
安装软件包
开发 Symfony 应用程序时的常见做法是安装提供即用型功能的包(Symfony 称之为捆绑包)。软件包在使用之前通常需要进行一些设置(编辑一些文件以启用捆绑包,创建一些文件以添加一些初始配置等)
大多数情况下,此设置可以自动化,这就是 Symfony 包含Symfony Flex 的原因,它是一个用于简化 Symfony 应用程序中包的安装/删除的工具。从技术上讲,Symfony Flex 是一个 Composer 插件,在创建新的 Symfony 应用程序时默认安装,并自动执行 Symfony 应用程序的最常见任务。
Symfony Flex 修改了require 、 update和remove Composer 命令的行为以提供高级功能。考虑以下示例:
cd my-project/
composer require logger
如果您在不使用 Flex 的 Symfony 应用程序中运行该命令,您将看到 Composer 错误,说明logger不是有效的包名称。但是,如果应用程序安装了 Symfony Flex,则该命令将安装并启用使用官方 Symfony 记录器所需的所有包。
这是可能的,因为许多 Symfony 包/捆绑包定义了“配方” ,这是一组用于将包安装到 Symfony 应用程序中并启用包的自动指令。 Flex 会跟踪它安装在symfony.lock文件中的配方,该文件必须提交到您的代码存储库。
Symfony Flex 配方由社区贡献,它们存储在两个公共存储库中:
- 主配方存储库是高质量和维护包的精选配方列表。默认情况下,Symfony Flex 仅在此存储库中查找
- Contrib 配方存储库,包含社区创建的所有配方。它们都保证可以工作,但它们的相关包可能无法维护。 Symfony Flex 在安装任何这些配方之前都会征求您的许可。
阅读Symfony Recipes 文档,了解有关如何为您自己的包创建菜谱的所有内容。
Packs
有时,单个功能需要安装多个包和捆绑包。 Symfony 没有单独安装它们,而是提供了packs ,它们是包含多个依赖项的 Composer 元包。
例如,要在应用程序中添加调试功能,您可以运行composer require --dev debug命令。这将安装symfony/debug-pack ,进而安装多个软件包,如symfony/debug-bundle 、 symfony/monolog-bundle 、 symfony/var-dumper等。
您不会在您的composer.json中看到symfony/debug-pack依赖项,因为Flex会自动解压该包。这意味着它只添加真正的包作为依赖项(例如,您将在require-dev中看到一个新的symfony/var-dumper )。
检查安全漏洞
安装Symfony CLI时创建的symfony二进制文件提供了一个命令来检查项目的依赖项是否包含任何已知的安全漏洞:
symfony check:security
良好的安全实践是定期执行此命令,以便能够尽快更新或替换受损的依赖项。安全检查是通过获取公共PHP安全建议数据库在本地完成的,因此您的composer.lock文件不会在网络上发送。
如果您的任何依赖项受到已知安全漏洞的影响,则check:security命令将以非零退出代码终止。通过这种方式,您可以将其添加到项目构建过程和持续集成工作流程中,以使它们在存在漏洞时失败。
Symfony LTS 版本
根据Symfony的发布流程,“长期支持”(或简称LTS)版本每两年发布一次。查看Symfony 版本以了解最新的 LTS 版本。
默认情况下,创建新 Symfony 应用程序的命令使用最新的稳定版本。如果您想使用 LTS 版本,请添加--version选项:
symfony new my_project_directory --version=lts
symfony new my_project_directory --version=next
symfony new my_project_directory --version="6.4.*"
lts和next快捷键仅在使用 Symfony 创建新项目时可用。如果你使用Composer,你需要告诉确切的版本:
composer create-project symfony/skeleton:"6.4.*" my_project_directory
Symfony 演示应用程序
Symfony 演示应用程序是一个功能齐全的应用程序,展示了开发 Symfony 应用程序的推荐方法。对于 Symfony 新手来说,它是一个很棒的学习工具,它的代码包含大量注释和有用的注释。
运行以下命令来创建一个基于 Symfony Demo 应用程序的新项目:
symfony new my_project_directory --demo