phpenv 本身不提供禁止目录执行 php 的能力,需通过 apache/nginx 配置或 windows 文件权限实现:apache 中用 禁用引擎并拒绝访问;nginx 中用 location 规则阻断上传目录及其中 php 请求;windows 权限层面取消执行权限最可靠。

phpEnv 是 Windows 下的本地 PHP 集成环境,本身不提供“禁止某目录执行 PHP”的运行时防护能力——它不托管网站、不解析 HTTP 请求、也不处理 Nginx/Apache 的 location 规则。所谓“项目禁止执行 PHP 脚本”,实际是 Web 服务器(如 phpEnv 内置的 Apache 或 Nginx)或 Windows 文件系统权限层面的事,不是 phpEnv 自身配置项。
phpEnv 里 Apache 如何禁用 upload 目录的 PHP 执行
phpEnv 默认使用 Apache,其站点根目录通常为 C:\phpenv\www。若你的项目上传目录是 /upload,需在对应虚拟主机配置中添加 <directory></directory> 块:
- 打开
C:\phpenv\server\apache\conf\vhosts.conf(或宝塔风格的独立 vhost 文件),找到对应<virtualhost></virtualhost>段 - 在
之前插入:
<directory>
php_flag engine off
Require all denied
</directory>
注意路径用正斜杠或双反斜杠,单反斜杠会引发 Apache 解析错误;Require all denied 是 Apache 2.4+ 的写法,旧版用 Order deny,allow + Deny from all;改完必须重启 Apache(phpEnv 控制台点「重启 Apache」或命令行运行 httpd -k restart)。
phpEnv 内置 Nginx 禁止 PHP 执行的配置位置与写法
phpEnv 支持切换 Nginx 模式,但它的 Nginx 配置文件结构较简,不默认生成 per-site 配置。你需要手动编辑主配置:
- 路径通常是
C:\phpenv\server\nginx\conf\nginx.conf - 在
http { ... }块内、所有server { ... }之前或之内添加:
location ^~ /upload/ {
deny all;
}
location ~ ^/upload/.*\.php$ {
deny all;
}
这两条规则缺一不可:^~ /upload/ 阻断整个目录访问(含静态文件),~ ^/upload/.*\.php$ 专杀 PHP 脚本请求;顺序很重要——必须放在 location ~ \.php$ 块之前,否则会被后者的通用匹配优先捕获;保存后重启 Nginx,否则零生效。
Windows 文件权限才是 phpEnv 下最硬的防护层
Apache/Nginx 进程在 Windows 上以某个用户身份运行(如 SYSTEM 或 phpEnv 创建的服务账户),直接限制该用户对敏感目录的「执行」权限,比任何 Web 配置都底层可靠:
- 右键点击
C:\phpenv\www\myproject\upload→ 「属性」→ 「安全」→ 「编辑」 - 选中运行 Web 服务的用户(如
IIS_IUSRS或SYSTEM),取消勾选「遍历文件夹/运行文件」和「执行文件」 - 确认后,即使配置漏掉、.htaccess 被绕过,PHP 文件双击打不开、Web 请求也返回 403 或 500
- 注意:此操作不影响「写入」权限,上传仍可进行;但上传后的 .php 文件无法被解释执行
这一层容易被忽略,因为 phpEnv 文档从不提它——但它恰恰是 Windows 环境下最稳的一道防线。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











