第2页 / 共40页

运行环境与核心配置

了解代码是如何在服务器上跑起来的,以及如何通过 php.ini 控制行为。本页将理清 Nginx 与 PHP 的协作关系,并介绍开发中最常用的核心配置项。

一、Web 请求流转全貌

我们编写的 PHP 代码本身只是一堆文本文件,它需要被"翻译"和"执行"。在生产环境中,这个过程通常由 Web 服务器(如 Nginx)和 PHP 应用服务器(PHP-FPM)协作完成。

1. Nginx 的职责

Nginx 是一个高性能的 HTTP 服务器。当请求到达时,它首先判断文件类型。如果是图片、CSS、JS 等静态文件,Nginx 会直接读取并返回给浏览器;如果是以 .php 结尾的动态请求,它会按照配置将其"代理"转发给 PHP-FPM。

2. PHP-FPM 的职责

PHP-FPM(FastCGI Process Manager)是一个专门用于管理 PHP 进程的程序。它常驻在内存中,接收到 Nginx 转发来的请求后,分配一个 Worker 进程去执行对应的 PHP 脚本。执行完毕后,将生成的 HTML 结果回传给 Nginx,再由 Nginx 返回给浏览器。

为什么不直接让 Nginx 执行 PHP? 因为 Nginx 的设计哲学是"只做最擅长的事"(高并发网络通信),它不内置任何语言的解释器。这种职责分离的架构,使得各自都能发挥最高效能。

二、php.ini 核心配置

PHP 的运行行为受配置文件 php.ini 控制。在开发阶段,我们需要了解几个最常用的配置项,以便在遇到报错或性能瓶颈时知道去哪里调整。

1. 错误报告与显示

开发环境必须开启错误显示,否则代码出错时页面只会一片空白,无从下手排查。

display_errors = On # 开启错误输出到页面 error_reporting = E_ALL # 报告所有级别的错误

2. 性能与资源限制

控制 PHP 脚本能使用的最大内存和执行时间,防止写死循环的代码把服务器内存吃光。

memory_limit = 128M # 单脚本最大可用内存 max_execution_time = 30 # 脚本最大执行秒数,超时则被强杀

3. 文件上传相关

如果开发涉及图片上传功能,需要确保这两个值大于用户上传文件的大小,否则上传会失败。

upload_max_filesize = 20M # 允许上传的单个文件最大体积 post_max_size = 25M # 通过 POST 提交数据的最大体积

修改 php.ini 后必须重启 PHP-FPM 服务才能生效。可以通过运行 phpinfo() 函数,并在页面中搜索 "Loaded Configuration File" 来确认当前加载的是哪个配置文件。

三、开发工具准备

虽然可以用记事本写 PHP,但为了效率和代码规范,强烈建议使用专业的代码编辑器。

准备好编辑器后,你就可以开始编写第一行 PHP 代码了。下一页,我们将动手写出你的第一个 PHP 程序,并拆解它的基础语法结构。