PHP 是一种用来构建网页的服务器端脚本语言。.php 文件在 Web 服务器上运行,输出 HTML(例如用 echo "<h1>Hello</h1>";),服务器再把这段 HTML 发送到访问者的浏览器。浏览器永远看不到 PHP 代码,只能看到它的运行结果。
点击“运行”:PHP 会生成下面的页面,“页面”标签页会像浏览器那样把它显示出来。
切换到“输出”标签页,就能看到 PHP 打印出的纯 HTML,这正是浏览器会收到的文本。改一个价格或者加一件商品,再运行一次看看。
PHP 能做什么
PHP 是为 Web 而生的,现在它的大部分用武之地也仍然在 Web:
- 网站和 CMS。 WordPress、Drupal 和 Joomla 都是用 PHP 写的,基于它们搭建的网站也都是如此。
- Web 应用。 Laravel 和 Symfony 等框架被用来开发网店、数据看板、SaaS 产品和内部工具。
- API。 PHP 脚本可以输出 JSON 而不是 HTML,很多移动应用和 JavaScript 前端就是这样获取数据的。
- 命令行脚本。 定时任务、数据导入、报表生成和部署工具都可以用
php script.php运行,完全不需要 Web 服务器。
一次 PHP 请求如何变成 HTML
当有人打开 https://example.com/menu.php 时,会发生下面这些事:
- 浏览器向服务器发送一个 HTTP 请求。
- Web 服务器(Apache、搭配 PHP-FPM 的 Nginx,或 PHP 内置的服务器)看到
.php扩展名,把文件交给 PHP。 - PHP 从上到下运行这个文件。
<?php ... ?>标签之外的文本原样复制到输出中;标签内的代码会被执行,并且可以用echo输出更多文本。 - PHP 打印出的所有内容成为响应体,浏览器把它渲染出来。
- PHP 忘掉一切。下一个请求会重新从头运行脚本。
第 5 步正是 PHP 应用要用会话和数据库的原因:变量里的任何东西都不会保留到下一次请求。下面的表单展示了这个循环。运行它,在表单里输入一个名字,然后点击 Send:同一个脚本会再次运行,这一次 $_POST 里有了数据。
htmlspecialchars 会把 < 这样的字符转换成 <,所以像 <b>Ada</b> 这样的名字会以文本形式显示,而不会变成标记。来自访问者的每一个值都应该这样输出;详情见 htmlspecialchars 页面。
PHP 可以和 HTML 混写
PHP 文件可以是纯代码,也可以是嵌着 PHP 片段的 HTML 页面。几乎所有工作都靠这三种标签完成:
| 标签 | 作用 |
|---|---|
<?php ... ?> | 运行其中的代码 |
<?= $value ?> | <?php echo $value; ?> 的简写 |
文件末尾的 ?> | 可省略;只包含 PHP 代码的文件里不要写它 |
把 $hour 改成 9 再运行一次,就能看到另一句问候语。
PHP 代码长什么样
变量以 $ 开头,语句以 ; 结尾,双引号字符串里可以直接写变量。数组既可以当列表用,也可以当键值映射用。
这里的输出是纯文本,因为脚本没有打印任何 HTML 标签。在终端里运行的也正是这样的代码。
现代 PHP(PHP 8)
PHP 8.0(2020 年)加入了 match 表达式、命名参数、联合类型、str_contains() 和 JIT 编译器;PHP 8.1 加入了枚举和只读属性。为 PHP 8.3 编写的代码是这样的:
PHP 的含义
PHP 是“PHP: Hypertext Preprocessor”的缩写。这个名字是递归的:第一个 P 代表的就是 PHP 本身。Rasmus Lerdorf 在 1995 年发布了第一个版本,当时叫“Personal Home Page Tools”,是他为自己的个人主页写的一组脚本;现在的名字随 1998 年的 PHP 3 出现。“超文本预处理器”很好地描述了它的工作:在超文本(HTML)发送出去之前,先由 PHP 处理文件。
新手常犯的错误:在浏览器中直接打开 .php 文件
双击 index.php 会把它当作本地文件打开,浏览器要么显示原始的 PHP 代码,要么提示你下载它。什么都不会运行,因为另一端根本没有 PHP。.php 文件必须由 Web 服务器提供,并由服务器交给 PHP 处理。在自己的电脑上,最简单的方法是使用 PHP 内置的服务器:
php -S localhost:8000
然后打开 http://localhost:8000/index.php。运行 PHP 页面介绍了这种方式以及如何在终端中运行脚本,安装 PHP 则教你先在电脑上装好 PHP。
常见问题
PHP 是什么的缩写?
PHP 是 "PHP: Hypertext Preprocessor" 的缩写,这是一个递归缩写。它最初在 1995 年的名字是 "Personal Home Page Tools",来自 Rasmus Lerdorf 为自己的网站编写的一组脚本。
PHP 是前端语言还是后端语言?
后端。PHP 在服务器上运行,浏览器只会收到脚本输出的 HTML(或 JSON),永远看不到 PHP 代码本身。
PHP 主要用来做什么?
在服务器上构建网页和 Web 应用:内容网站、网店、管理后台和 API。WordPress、Drupal、Magento、Laravel 和 Symfony 都是用 PHP 写的。它也能运行命令行脚本,比如定时任务和数据导入。
2026 年还有人用 PHP 吗?
有。据 W3Techs 统计,在能检测出服务器端语言的网站中,大约四分之三使用 PHP,这在很大程度上要归功于 WordPress。这门语言仍在积极开发:PHP 8.0 加入了 match、命名参数和 JIT 编译器,PHP 8.1 加入了枚举和只读属性。
PHP 好学吗?
做 Web 开发的话,它是比较容易上手的第一门语言:一个只写着 <?php echo "Hello"; 的文件就已经是能用的页面,而且所有共享主机都支持它。难的是尽早养成安全的习惯,比如用 htmlspecialchars 转义输出、用预处理语句执行 SQL。