当你学习 Web 编程时,有一个重大的思维转换必须要做:
"当我访问一个网站时到底发生了什么?PHP 在这个过程中扮演什么角色?"
这篇文章是你理解 PHP 实际工作原理的白话指南——它在服务器上做什么,如何与浏览器连接,以及如何处理 Web 请求。
无论你是刚开始学习 PHP,还是之前使用过但不了解幕后机制,这都是你需要的服务器端思维。
想象你打开浏览器并访问:
https://example.com/profile.php
这是真正发生的过程:
profile.php
关键概念:PHP 在页面到达浏览器之前运行。你永远不会在浏览器的"查看源代码"中"看到"PHP 代码。
从本质上讲,PHP 就像一个请求处理器。每次用户访问页面时:
没有"持续进程"或对上次请求的记忆——除非你明确使用 sessions、数据库或缓存。
以下是基本 PHP 脚本的运行方式:
<?php
// profile.php
session_start(); // 初始化会话
$userId = $_GET['id'] ?? null;
if (!$userId) {
echo "No user selected.";
exit;
}
$db = new PDO(...); // 连接数据库
$stmt = $db->prepare("SELECT * FROM users WHERE id = ?");
$stmt->execute([$userId]);
$user = $stmt->fetch();
if (!$user) {
echo "User not found.";
exit;
}
echo "<h1>Hello, " . htmlspecialchars($user['name']) . "</h1>";
?>
发生的过程:
你不需要手动发送响应——任何你 echo
或 print
的内容都会成为浏览器看到的 HTML。
PHP 不是独自运行的——它由像 Apache 或 nginx 这样的 Web 服务器执行。
.htaccess
).php
文件传递给 PHP 解释器(如 PHP-FPM)把 Web 服务器想象成连接浏览器和 PHP 的中间人。
与 JavaScript 不同,PHP 从不在客户端运行。这就是为什么你不能做这样的事情:
setTimeout(function () {
// 这在 PHP 中不会工作!
}, 1000)
如果你看到 .php
页面在显示后加载某些内容,那可能是使用了 AJAX——JavaScript 对服务器上的 PHP 端点进行额外调用。
在执行之前,PHP 文件只是纯文本。它们存在于你的服务器上,如:
/var/www/html/index.php
但一旦请求被发出,PHP 运行文件并在发送后丢弃结果。这意味着:
PHP 可以使用会话在请求之间记住事情:
session_start();
$_SESSION['user_id'] = 123;
一旦你"理解"PHP 如何在幕后工作:
如果你将思维从"编写页面"转换为"响应请求",你就走上了掌握服务器端编程的正确道路——不仅仅是 PHP。