php脚本怎么运行
你写了一个 hello.php,本运里面是本运 <?php echo "别光看,跑一下"; ?本运>。双击它?本运浏览器只会问你要不要下载这个文件。PHP 脚本不是本运这样跑的。
最直接的本运方式:打开终端,敲 php hello.php。本运前提是本运你系统里装了 PHP,并且 php 这个命令在 PATH 里。本运Windows 上装了 PHP 后一般要把安装目录加到环境变量,本运否则得写全路径,本运像 C:\php\php.exe hello.php。本运Mac 用户用 Homebrew 装完基本就能直接用,本运Linux 发行版大多自带或者一条 apt install php-cli 搞定。本运
命令行跑 PHP 有个好处:输出直接打在终端上,本运不经过 Web 服务器,不涉及 HTTP,也不管什么 $_GET、$_POST。你写个循环打印一百行,它就老老实实打一百行。这种模式叫 CLI(Command Line Interface)模式,很多 PHP 脚本——定时任务、数据处理、批量导入——都是这么跑的。
但更多人第一次接触 PHP 是在网页里。比如你写了个 index.php,里面混着 HTML 和 PHP 代码,放到网站根目录,浏览器访问 http://localhost/index.php,页面就出来了。这背后不是浏览器在解析 PHP,而是 Web 服务器(Apache、Nginx 或 PHP 内置服务器)把请求转给 PHP 解释器,解释器执行完把生成的 HTML 吐回去。
这里有个容易踩的坑:直接用浏览器打开本地 PHP 文件,比如 file:///C:/project/index.php,PHP 代码会原样显示出来,因为浏览器不认识 <?php。它只认 HTML、CSS、JavaScript。PHP 必须经过服务器环境。
那不想装 Apache 或 Nginx 怎么办?PHP 5.4 之后自带了一个内置服务器。在项目目录下执行 php -S localhost:8000,然后浏览器访问 http://localhost:8000,就能看到你的 PHP 页面了。这个内置服务器只适合开发调试,别拿去上线。我见过有人拿它跑生产环境,结果并发一上来就卡死,连日志都来不及写。
如果你用的是 XAMPP、WAMP、MAMP 这类集成环境,事情更简单。安装完启动 Apache,把 PHP 文件扔进 htdocs 或 www 目录,浏览器输入 http://localhost/你的文件.php 就完事。这些套件帮你把 PHP、MySQL、Apache 的配置都调好了,省心,但也容易让人搞不清哪个组件在干什么。哪天换个环境就懵了。
还有一种情况:PHP 作为其他服务器的模块运行。比如 Apache 的 mod_php,PHP 解释器直接嵌在 Apache 进程里,每次请求不用重新启动 PHP。Nginx 通常配 PHP-FPM,一个独立的 FastCGI 进程管理器,Nginx 把 PHP 请求转发给 FPM,FPM 再分配给空闲的 PHP 进程处理。这两种方式性能特征不同,配置起来也各有各的麻烦。你要是用 Nginx + PHP-FPM,nginx.conf 里那段 location ~ \.php$ 没写对,就会返回 502 Bad Gateway,然后你盯着错误日志找半天。
说个具体例子。我之前帮人调一个 WordPress 站点,环境是 Nginx + PHP-FPM。首页能打开,但后台 /wp-admin 一直白屏。查了 Nginx 日志,发现请求 admin.php 时 FPM 返回了 “Access denied”。原因是 php-fpm.conf 里 security.limit_extensions 默认只允许 .php,而那个站点用了 .php5 后缀。改一行配置,重启 FPM,好了。PHP 脚本能不能跑,有时候不取决于脚本本身,而取决于它经过的那条链路。
所以回到问题:PHP 脚本怎么运行?取决于你想让它干什么。命令行工具就 php 文件名;网页就丢进 Web 服务器目录;本地开发用内置服务器最省事;生产环境老老实实配好 Apache 或 Nginx + PHP-FPM。没有唯一答案,但每条路都有明确的入口和坑。跑不起来的时候,先看错误日志,别猜。