如何使用phpEnv一键安装Yii2框架并配置伪静态?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1341个文字,预计阅读时间需要6分钟。
抱歉,您提供的内容似乎不完整,无法进行修改。请提供完整的文本内容,以便我能够按照您的要求进行简化改写。
phpEnv 中站点根目录必须指向 web 子目录
phpEnv 默认新建站点时,根目录会设为项目根路径(如 D:\phpenv\www\myapp),但 Yii2 的敏感配置(config/、runtime/、vendor/)都在其上层。一旦被 Web 服务器直接访问,轻则报错,重则泄露数据库配置。
- 打开 phpEnv 控制面板 → 「网站管理」→ 编辑你的站点 → 将「网站目录」改为
D:\phpenv\www\myapp\web(不是项目根目录) - 确认
web/index.php文件存在且权限可读;若用高级版,需分别为frontend/web和backend/web建两个独立站点 - 检查 phpEnv 使用的 Apache 版本:2.4+ 才支持
Require all granted,旧版要用Order allow,deny+Allow from all - Windows 下注意 php.ini 是否加载正确:运行
php --ini看 CLI 加载路径,再查 Apache 模块里实际用的是哪份(常位于phpenv\apache\conf\extra\php.ini)
Apache 伪静态(.htaccess)必须放在 web 目录且启用 AllowOverride
phpEnv 内置 Apache,默认关闭 .htaccess 解析。即使你写了规则,没开 AllowOverride All 就等于白写,enablePrettyUrl 会静默失效,URL 里始终带 index.php。
- 在项目
web/目录下新建文件,命名为.htaccess(注意开头有个点,Windows 资源管理器可能不显示,可用记事本另存为选择“所有文件”类型) - 内容严格按以下写(别加空行、别漏空格):
Options +FollowSymLinks IndexIgnore */* RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . index.php
- 编辑 phpEnv 对应站点的 Apache 配置文件(通常在
phpenv\apache\conf\vhost\your-site.conf),找到<Directory "D:/phpenv/www/myapp">这一段,把它改成指向web目录,并确保包含:
<Directory "D:/phpenv/www/myapp/web"> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory>
- 重启 phpEnv 的 Apache 服务(不是仅刷新页面)
Yii2 的 urlManager 配置要和服务器能力对齐
enablePrettyUrl 开了但 URL 还带 index.php?大概率是上面两步没做对。另外,showScriptName 设为 false 后,如果重写失败,Yii2 会直接返回 404,而不是降级回带 index.php 的链接。
立即学习“PHP免费学习笔记(深入)”;
- 在
common/config/main.php(高级版)或config/web.php(基础版)的components数组中添加:
'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' => false, 'rules' => [ '<controller:\w+>/<id:\d+>' => '<controller>/view', '<controller:\w+>/<action:\w+>' => '<controller>/<action>', ], ],
- 不要盲目复制网上带
<module:\w+>的规则——基础版没 module 层,会导致路由 404 - 高级版前后端要分开配:
frontend/config/main.php和backend/config/main.php各自加一份urlManager,且baseUrl不同(前端通常为/,后台建议设为/admin避免冲突) - 验证是否生效:访问
http://localhost/site/about,能正常显示即 OK;若 404,先看 Apache 错误日志里有没有Invalid command 'RewriteEngine'(说明 mod_rewrite 没启用)
常见 500 错误的定位顺序
phpEnv 下 Yii2 报 500,90% 和路径、权限、扩展缺失有关,而不是代码逻辑问题。别急着改 PHP 代码,先看日志。
- 第一步:打开 phpEnv 的 Apache 错误日志(路径一般为
phpenv\apache\logs\error.log),搜PHP Fatal error或require(): Failed opening required - 第二步:如果看到类似
Failed opening required '/D:/phpenv/www/myapp/requirements.php',说明入口文件加载路径错了——根目录没设到web/,导致index.php从错误位置加载了相对路径 - 第三步:检查 PHP 扩展是否启用:在浏览器访问
http://localhost/phpinfo.php(phpEnv 自带),确认pdo_mysql、mbstring、openssl、json全部为 enabled - 第四步:Windows 下特别注意:phpEnv 的 Apache 和 CLI 可能用不同 php.ini,
php -m显示有pdo_mysql,不代表 Apache 模块也加载了,得在phpinfo()页面里核对
伪静态不是“开了就完事”,它依赖 Web 服务器配置、框架配置、文件位置三者咬合。少一个齿轮,整个链路就卡死。最常被跳过的其实是 AllowOverride All 和 .htaccess 文件名是否真正生效——很多人以为建了文件就行,其实 Windows 下它极容易变成 .htaccess.txt。
本文共计1341个文字,预计阅读时间需要6分钟。
抱歉,您提供的内容似乎不完整,无法进行修改。请提供完整的文本内容,以便我能够按照您的要求进行简化改写。
phpEnv 中站点根目录必须指向 web 子目录
phpEnv 默认新建站点时,根目录会设为项目根路径(如 D:\phpenv\www\myapp),但 Yii2 的敏感配置(config/、runtime/、vendor/)都在其上层。一旦被 Web 服务器直接访问,轻则报错,重则泄露数据库配置。
- 打开 phpEnv 控制面板 → 「网站管理」→ 编辑你的站点 → 将「网站目录」改为
D:\phpenv\www\myapp\web(不是项目根目录) - 确认
web/index.php文件存在且权限可读;若用高级版,需分别为frontend/web和backend/web建两个独立站点 - 检查 phpEnv 使用的 Apache 版本:2.4+ 才支持
Require all granted,旧版要用Order allow,deny+Allow from all - Windows 下注意 php.ini 是否加载正确:运行
php --ini看 CLI 加载路径,再查 Apache 模块里实际用的是哪份(常位于phpenv\apache\conf\extra\php.ini)
Apache 伪静态(.htaccess)必须放在 web 目录且启用 AllowOverride
phpEnv 内置 Apache,默认关闭 .htaccess 解析。即使你写了规则,没开 AllowOverride All 就等于白写,enablePrettyUrl 会静默失效,URL 里始终带 index.php。
- 在项目
web/目录下新建文件,命名为.htaccess(注意开头有个点,Windows 资源管理器可能不显示,可用记事本另存为选择“所有文件”类型) - 内容严格按以下写(别加空行、别漏空格):
Options +FollowSymLinks IndexIgnore */* RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . index.php
- 编辑 phpEnv 对应站点的 Apache 配置文件(通常在
phpenv\apache\conf\vhost\your-site.conf),找到<Directory "D:/phpenv/www/myapp">这一段,把它改成指向web目录,并确保包含:
<Directory "D:/phpenv/www/myapp/web"> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory>
- 重启 phpEnv 的 Apache 服务(不是仅刷新页面)
Yii2 的 urlManager 配置要和服务器能力对齐
enablePrettyUrl 开了但 URL 还带 index.php?大概率是上面两步没做对。另外,showScriptName 设为 false 后,如果重写失败,Yii2 会直接返回 404,而不是降级回带 index.php 的链接。
立即学习“PHP免费学习笔记(深入)”;
- 在
common/config/main.php(高级版)或config/web.php(基础版)的components数组中添加:
'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' => false, 'rules' => [ '<controller:\w+>/<id:\d+>' => '<controller>/view', '<controller:\w+>/<action:\w+>' => '<controller>/<action>', ], ],
- 不要盲目复制网上带
<module:\w+>的规则——基础版没 module 层,会导致路由 404 - 高级版前后端要分开配:
frontend/config/main.php和backend/config/main.php各自加一份urlManager,且baseUrl不同(前端通常为/,后台建议设为/admin避免冲突) - 验证是否生效:访问
http://localhost/site/about,能正常显示即 OK;若 404,先看 Apache 错误日志里有没有Invalid command 'RewriteEngine'(说明 mod_rewrite 没启用)
常见 500 错误的定位顺序
phpEnv 下 Yii2 报 500,90% 和路径、权限、扩展缺失有关,而不是代码逻辑问题。别急着改 PHP 代码,先看日志。
- 第一步:打开 phpEnv 的 Apache 错误日志(路径一般为
phpenv\apache\logs\error.log),搜PHP Fatal error或require(): Failed opening required - 第二步:如果看到类似
Failed opening required '/D:/phpenv/www/myapp/requirements.php',说明入口文件加载路径错了——根目录没设到web/,导致index.php从错误位置加载了相对路径 - 第三步:检查 PHP 扩展是否启用:在浏览器访问
http://localhost/phpinfo.php(phpEnv 自带),确认pdo_mysql、mbstring、openssl、json全部为 enabled - 第四步:Windows 下特别注意:phpEnv 的 Apache 和 CLI 可能用不同 php.ini,
php -m显示有pdo_mysql,不代表 Apache 模块也加载了,得在phpinfo()页面里核对
伪静态不是“开了就完事”,它依赖 Web 服务器配置、框架配置、文件位置三者咬合。少一个齿轮,整个链路就卡死。最常被跳过的其实是 AllowOverride All 和 .htaccess 文件名是否真正生效——很多人以为建了文件就行,其实 Windows 下它极容易变成 .htaccess.txt。

