
Yii 2 安装完全指南Composer 与归档两种方式、环境验证及 Apache/Nginx 生产部署配置【免费下载链接】yii2Yii 2: The Fast, Secure and Professional PHP Framework项目地址: https://gitcode.com/gh_mirrors/yi/yii2本篇指南基于 Yii 2 官方文档的《Yii 安装》一章docs/guide-uk/start-installation.md本文以其为核心骨架并参考同主题英文版及框架源码整理而成。你将掌握通过 Composer 或归档文件安装 Yii 2 的完整步骤、安装后如何借助php yii serve内置服务器与 requirements 检查脚本验证环境、以及在生产服务器上配置 Apache / Nginx含 NGINX Unit、IIS 等补充方案将文档根目录指向web/目录并隐藏index.php的关键配置。读完本文你可以独立完成一个 Yii 2 基础模板项目的从零安装到上线部署。安装方式总览Composer 与归档文件Yii 2 提供两种安装路径使用 Composer 包管理器官方推荐一条命令即可完成框架与项目模板的安装后续安装新扩展或升级 Yii 也只需执行一条命令。下载归档文件从官网手动下载并解压适合无法使用 Composer 的环境。标准安装完成后你获得的不仅是框架本体本仓库 framework/ 目录即框架源码composer 包名为yiisoft/yii2见 framework/composer.json还有一个项目模板——一个开箱即用的 Yii 工作项目已实现用户登录/退出、联系表单等基础功能代码按推荐方式组织是绝佳的项目起点。Yii 提供两种模板基础项目模板Basic Project Template适合约 90% 的 Web 应用开发与高级模板的主要区别在于代码组织方式。新手强烈建议从基础模板入手它简单但功能完备。高级项目模板Advanced Project Template代码分层更细常见为 frontend/backend/console 等多入口结构更适合团队协作环境下的复杂应用开发。本文及后续章节围绕基础项目模板展开讲解。使用 Composer 安装第一步安装 Composer如果尚未安装 ComposerLinux 和 macOS 用户执行以下命令curl -sS https://getcomposer.org/installer | php mv composer.phar /usr/local/bin/composerWindows 用户则下载并运行 Composer-Setup.exe 安装程序。本文所有 Composer 命令均假设已全局安装可直接使用composer命令如果你使用的是本地目录下的composer.phar需相应调整示例命令。若之前已装过 Composer请先确保版本足够新执行composer self-update。注意安装 Yii 过程中Composer 需要从 GitHub API 获取大量包信息请求量可能超过 GitHub API 速率限制。若触发限制Composer 会要求输入 GitHub 账号凭据以换取访问令牌从而提升 API 配额。建议在安装 Yii 之前预先配置好访问令牌。第二步创建项目在 Web 可访问的目录下执行composer global require fxp/composer-asset-plugin:^1.4.1 composer create-project --prefer-dist yiisoft/yii2-app-basic basic第一条命令安装 composer-asset-plugin 插件使 Composer 能够管理 Bower 与 NPM 包依赖该命令只需执行一次第二条命令将 Yii 安装到名为basic的目录目录名可按需更改。说明随着生态演进目前更常见的做法是借助 asset-packagist.org 托管前端资源包或直接在composer.json中声明replace规则跳过 Composer 安装资源两种思路详见下文「资源依赖的管理」小节。若composer create-project失败可参考 Composer 官方排错文档修复错误后在basic目录内执行composer update续传中断的安装。安装最新开发版若想体验最新开发版非稳定版可添加--stabilitydev选项composer create-project --prefer-dist --stabilitydev yiisoft/yii2-app-basic basic⚠️ 开发版不应部署到生产服务器它可能破坏线上代码的稳定性。资源依赖的管理Yii 依赖 Bower / NPM 包提供 CSS 与 JavaScript 资源库并通过 Composer 统一获取使 PHP 与前端包版本在同一时刻解析。如果希望完全跳过 Composer 的资源安装改用原生 Bower/NPM 客户端、CDN或自行管理可在composer.json中加入replace: { bower-asset/jquery: 1.11.0, bower-asset/inputmask: 3.2.0, bower-asset/punycode: 1.3.0, bower-asset/yii2-pjax: 2.0.0 },注意跳过 Composer 安装资源后你需要自行负责资源的安装与版本冲突解决不同扩展的资源文件之间可能出现不一致。关于资源体系的更多细节可进一步阅读资源Assets文档。从归档文件安装归档安装只需三步从官网下载 Yii 归档文件将归档解压到 Web 可访问的目录编辑config/web.php为cookieValidationKey配置项填入一个秘密密钥使用 Composer 安装时会自动生成手工归档安装必须手动填写// !!! 在下面填入一个秘密密钥如果为空——cookie 校验必需 cookieValidationKey enter your secret key here,为什么这个密钥如此重要从源码看framework/web/Request.php 的loadCookies()方法在启用 cookie 校验enableCookieValidation时会用该密钥通过Yii::$app-getSecurity()-validateData()校验每个请求 cookie 的签名若cookieValidationKey为空字符串将直接抛出InvalidConfigException提示 cookieValidationKey must be configured with a secret key.见 framework/web/Request.php。也就是说不配置此密钥任何依赖 cookie 的功能登录态、CSRF 防护等都会失败务必使用足够长且随机的字符串。其他安装选项上述流程适合绝大多数项目无论大小尤其适合刚开始学习 Yii 的开发者。若需要其他形态只想要框架本体、从零搭建应用参考从零开始构建应用一节的指引想要更复杂的、适合团队协作的应用骨架考虑安装高级项目模板Advanced Project Template。验证安装是否成功安装完成后可配置 Web 服务器见下节或直接使用PHP 内置 Web 服务器在项目根目录执行php yii serve注意默认监听 8080 端口。若端口被占用或想同时运行多个应用可用--port参数指定端口php yii serve --port8888该命令由 framework/console/controllers/ServeController.php 实现其actionIndex()方法将docroot默认app/web与地址拼装后交给 PHP 内置服务器php -S并打印 Server started on http://… 提示还支持--docroot别名-t、--port别名-p、--router别名-r等选项。端口被占用、文档根目录不存在、路由文件缺失时会分别返回不同的退出码见 framework/console/controllers/ServeController.php。若需从虚拟机等远程机器访问可用0.0.0.0:8000形式指定监听地址。启动后用浏览器访问http://localhost:8080/你应当看到 Congratulations! 欢迎页。如果页面未正常显示请检查 PHP 环境是否满足 Yii 的最低要求可通过以下任一方式检测将/requirements.php复制到/web/requirements.php用浏览器访问http://localhost/requirements.php在控制台执行cd basic php requirements.php关于 PHP 版本要求的说明原文档写作时要求 PHP 5.4 及以上并建议使用 PHP 7但以当前仓库的实际源码为准——framework/requirements/requirements.php 已将必选mandatory条件设为 PHP 7.3.0 或更高同时必选Reflection、PCRE、SPL、Ctype、MBString扩展OpenSSL加密解密组件、Intl国际化、Yii::t()高级参数格式化、EmailValidator/UrlValidator的 IDN 支持等为可选扩展但建议安装以启用对应能力。完整清单及说明都在该 requirements 脚本中检测逻辑由 framework/requirements/YiiRequirementChecker.php 提供控制台与 Web 两种报告视图分别位于 framework/requirements/views/console/index.php 与 framework/requirements/views/web/index.php。如果应用需要连接数据库还必须安装PDO PHP 扩展及对应驱动例如 MySQL 使用pdo_mysql。本仓库的 tests 目录中提供了docker-compose.mysql.yml、docker-compose.pgsql.yml、docker-compose.mssql.yml、docker-compose.oracle.yml等容器化数据库测试环境可作为参考。配置 Web 服务器提示如果只是试用 Yii、暂无部署计划可先跳过本节。按上文安装的应用可开箱即用地运行于 Apache 或 NginxWindows、macOS、Linux 皆可。生产环境中你可能希望访问地址从https://www.example.com/basic/web/index.php简化为https://www.example.com/index.php——这需要把 Web 服务器的文档根目录document root指向basic/web并可进一步隐藏 URL 中的index.php方法见路由与 URL 创建一节。安全提示将basic/web设为文档根目录后位于其同级目录下的私有应用代码与敏感数据文件将无法被终端用户直接访问这是一项重要的安全改进。若应用运行在无法修改服务器配置的虚拟主机环境仍可通过调整应用目录结构提升安全性参考虚拟主机环境一节。推荐的 Apache 配置在 Apache 的httpd.conf或虚拟主机配置中添加以下内容将path/to/basic/web替换为实际路径# 将文档根目录设置为 basic/web DocumentRoot path/to/basic/web Directory path/to/basic/web # 使用 mod_rewrite 支持美观 URL RewriteEngine on # 若 UrlManager 中 showScriptName 为 false禁止带脚本名访问 RewriteRule ^index.php/ - [L,R404] # 若请求的文件或目录真实存在则直接处理 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # 否则将请求转发到 index.php RewriteRule . index.php # ...其他设置... /DirectoryRewriteCond %{REQUEST_FILENAME} !-f与!-d保证真实存在的静态文件不被重写只有不存在的路径才交给index.php前端控制器处理RewriteRule ^index.php/ - [L,R404]则在开启美观 URL 后拒绝通过带脚本名的形式访问避免重复内容与潜在暴露。推荐的 Nginx 配置使用 Nginx 需将 PHP 以FPM SAPI方式安装。以下配置需替换path/to/basic/web与mysite.test为实际路径与域名server { charset utf-8; client_max_body_size 128M; listen 80; ## 监听 ipv4 端口 #listen [::]:80 default_server ipv6onlyon; ## 监听 ipv6 端口 server_name mysite.test; root /path/to/basic/web; index index.php; access_log /path/to/basic/log/access.log; error_log /path/to/basic/log/error.log; location / { # 将所有不是真实文件的请求重定向到 index.php try_files $uri $uri/ /index.php$is_args$args; } # 取消注释可避免 Yii 处理不存在的静态文件请求 #location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ { # try_files $uri 404; #} #error_page 404 /404.html; # 拒绝访问 /assets 目录下的 php 文件 location ~ ^/assets/.*\.php$ { deny all; } location ~ \.php$ { include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_pass 127.0.0.1:9000; #fastcgi_pass unix:/var/run/php5-fpm.sock; try_files $uri 404; } location ~* /\. { deny all; } }使用此配置时还应在php.ini中设置cgi.fix_pathinfo0以避免大量不必要的系统stat()调用提升性能。此外当站点启用 HTTPS 时必须添加fastcgi_param HTTPS on;Yii 才能正确识别连接是否加密这会影响安全链接判断与 URL 生成。补充方案NGINX Unit 与 IISNGINX Unit带 PHP 语言模块也能运行 Yii 应用示例配置要点监听 80 端口并将路由yii的匹配规则设定为「排除/assets/*仅匹配*.php与*.php/*」非 PHP 请求则回退到静态文件共享目录并最终 fallback 到index.phpPHP 应用目标分别定义direct直接按 root 提供与index指定script: index.php两个 target{ listeners: { *:80: { pass: routes/yii } }, routes: { yii: [ { match: { uri: [ !/assets/*, *.php, *.php/* ] }, action: { pass: applications/yii/direct } }, { action: { share: /path/to/app/web/, fallback: { pass: applications/yii/index } } } ] }, applications: { yii: { type: php, user: www-data, targets: { direct: { root: /path/to/app/web/ }, index: { root: /path/to/app/web/, script: index.php } } } } }IIS方案建议将应用放入文档根目录指向path/to/app/web的虚拟主机Web 站点并配置运行 PHP然后在web目录放置web.config通过 URL Rewrite 模块将所有「非真实文件/目录」的请求重写为index.php?xml version1.0 encodingUTF-8? configuration system.webServer directoryBrowse enabledfalse / rewrite rules rule nameHide Yii Index stopProcessingtrue match url. ignoreCasefalse / conditions add input{REQUEST_FILENAME} matchTypeIsFile ignoreCasefalse negatetrue / add input{REQUEST_FILENAME} matchTypeIsDirectory ignoreCasefalse negatetrue / /conditions action typeRewrite urlindex.php appendQueryStringtrue / /rule /rules /rewrite /system.webServer /configuration安装完成之后至此你的 Yii 2 基础模板应用已可运行。后续可继续阅读本指南的后续章节配置数据库、创建表单、使用 Gii 代码生成器快速搭建 CRUD以及理解应用结构与请求生命周期逐步从「装好」走向「用好」。【免费下载链接】yii2Yii 2: The Fast, Secure and Professional PHP Framework项目地址: https://gitcode.com/gh_mirrors/yi/yii2创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考