双击打开.php文件不会执行代码,仅显示源码,因PHP是服务端语言,需经PHP解释器配合Web服务器(如Apache、Nginx)或内置服务器解析才能运行。
双击直接打开 .php 文件不会执行 PHP 代码,只会用文本编辑器或浏览器打开源码——因为 PHP 是服务端脚本语言,必须经由 PHP 解释器(如 php-cgi 或 php-fpm)配合 Web 服务器(如 Apache、Nginx)或内置服务器解析后才能运行。
Windows/macOS 默认将 .php 关联为纯文本文件;浏览器直接打开本地 file:// 路径时,不经过 PHP 解释器, 会被当作文本原样输出,甚至被 HTML 解析器忽略(因无 包裹)。
Parse error: syntax error, unexpected '(浏览器把 PHP 标签当 HTML 解析)
$_GET、$_POST、header() 等函数全部不可用python script.py 那样可直接 CLI 执行的“通用脚本”,多数 Web 场景依赖 $_SERVER 变量和请求生命周期PHP 5.4+ 自带轻量级 Web 服务器,无需安装 Apache/Nginx,适合单文件调试或小型项目预览。
php -S localhost:8000
router.php:php -S localhost:8000 router.php,其中
router.php 至少包含 return false; 否则静态文件无法自动返回http://localhost:8000/index.php,而非双击文件——这是唯一正确入口php -S 不支持 .htaccess、不处理并发、无 HTTPS,严禁用于生产环境如果 PHP 文件只是做数据处理、生成文件、调用 API 等,不依赖 $_SERVER 或表单输入,可用 CLI 模式运行。
立即学习“PHP免费学习笔记(深入)”;
php /path/to/script.php
run.bat 文件:@php "%~dp0script.php",双击该批处理即可(但本质仍是调用 CLI,非双击 PHP 文件本身)%*
$_GET 为空,header() 报 Warning: Cannot modify header information,$_SERVER['DOCUMENT_ROOT'] 未定义if (php_sapi_name() !== 'cli') { die('CLI only'); }强行让双击 .php 文件触发 php -f 执行,会掩盖 Web 运行环境缺失的问题,且无法调试 HTTP 行为。
HKEY_CLASSES_ROOT\phpfile\shell\open\command 改为 "C:\path\to\php.exe" -f "%1" %*
/usr/bin/php -f "$1"
echo 输出直接弹窗或消失,无浏览器渲染,var_dump($_SERVER) 显示的是 CLI 环境变量,和 Web 完全不同php -S + 浏览器访问路径最易被忽略的一点:很多初学者以为「能输出 hello world 就算运行成功」,但实际业务中,$_FILES 上传、session_start()、setcookie()、数据库连接等全都依赖完整的 Web 请求周期,跳过服务器等于跳过整个执行上下文。