本文目录导读:

配置 PHP 项目的服务器运行参数通常分为两个层面:服务器软件 (Nginx/Apache) 配置 和 PHP 语言本身配置 (php.ini),以下是详细的操作指南。
核心配置文件 php.ini
这是 PHP 运行时的基础配置,修改后需要重启 Web 服务器(Nginx/Apache)或 PHP-FPM。
常见需要调整的参数:
; 上传文件限制 upload_max_filesize = 64M post_max_size = 64M ; 脚本执行时间限制 (秒) max_execution_time = 300 ; 内存限制 memory_limit = 512M ; 时区设置 date.timezone = Asia/Shanghai ; 错误报告 (生产环境建议关闭显示) display_errors = Off ; 开发环境可设为 On error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT ; 会话存活时间 session.gc_maxlifetime = 1440 ; 禁用危险函数 (安全加固) disable_functions = exec,passthru,shell_exec,system,proc_open,popen
配置文件位置:
- Linux:
/etc/php/8.x/cli/php.ini(CLI) 或/etc/php/8.x/fpm/php.ini(FPM) - Windows:
C:\php\php.ini - macOS (Homebrew):
/usr/local/etc/php/8.x/php.ini
Web 服务器配置
根据你使用的服务器软件进行配置。
A. Nginx + PHP-FPM(最常见方案)
编辑站点配置文件(如 /etc/nginx/sites-enabled/your-project):
server {
listen 80;
server_name your-domain.com;
root /var/www/your-project/public;
index index.php index.html;
# 关键参数
client_max_body_size 64M; # 允许上传大文件
keepalive_timeout 300;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
fastcgi_read_timeout 300; # PHP 执行超时
fastcgi_send_timeout 300;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
B. Apache 配置
编辑 .htaccess 或虚拟主机配置:
# 上传大小限制
<IfModule mod_php.c>
php_value upload_max_filesize 64M
php_value post_max_size 64M
</IfModule>
<IfModule mod_proxy.c>
# 代理超时
ProxyTimeout 300
</IfModule>
# 内存限制
php_value memory_limit 256M
PHP-FPM 配置(多版本 PHP 的核心)
文件位置:/etc/php/8.x/fpm/pool.d/www.conf
; 进程管理 pm = dynamic # 动态进程管理 pm.max_children = 50 # 最大进程数(根据服务器内存调整:每个进程约 20-50MB) pm.start_servers = 5 pm.min_spare_servers = 5 pm.max_spare_servers = 35 ; 请求超时 request_terminate_timeout = 300s ; 安全限制 security.limit_extensions = .php .phar ; 防止文件描述符耗尽 rlimit_files = 65535
调整 pm.max_children 的估算公式:
max_children ≈ 总内存 / (平均 PHP 进程内存)
8GB 内存服务器 / 50MB = 160
场景化配置示例
高并发 API 服务
; php.ini memory_limit = 128M max_execution_time = 30 opcache.enable=1 opcache.memory_consumption=128 ; FPM pool pm = static pm.max_children = 200
大文件上传系统
# Nginx client_max_body_size 500M; proxy_request_buffering off; # 禁止缓冲,节省内存 fastcgi_request_buffering off; # php.ini upload_max_filesize = 500M post_max_size = 600M
WordPress 站点
# Apache .htaccess php_value upload_max_filesize 100M php_value post_max_size 100M php_value memory_limit 256M php_value max_execution_time 300
验证配置生效
-
创建一个测试文件
info.php:<?php phpinfo();
-
检查关键配置:
Loaded Configuration File路径是否正确upload_max_filesize、max_execution_time是否符合预期Server API显示FPM/FastCGI或Apache 2.0 Handler
-
快速重载配置:
# Nginx + PHP-FPM sudo systemctl reload nginx sudo systemctl reload php8.1-fpm
Apache
sudo systemctl reload apache2
或
sudo service httpd graceful
---
### 6. 进阶技巧
- **分环境配置**:为开发/生产环境创建不同的 `php.ini` 副本
- **使用 `.user.ini`**:在每个项目根目录放置此文件,影响该目录及子目录
```ini
; 仅对当前项目生效
upload_max_filesize = 100M
- Docker 环境:通过环境变量或挂载配置文件覆盖
# Dockerfile 示例 COPY custom.ini /usr/local/etc/php/conf.d/
配置完成后,务必重启服务并验证,不同 PHP 版本(7.4/8.0/8.1)的配置项可能略有差异,建议参考对应版本的官方文档。