PHP项目如何配置服务器运行参数?

wen PHP项目 17

本文目录导读:

PHP项目如何配置服务器运行参数?

  1. Apache

配置 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

验证配置生效

  1. 创建一个测试文件 info.php

    <?php
    phpinfo();
  2. 检查关键配置

    • Loaded Configuration File 路径是否正确
    • upload_max_filesizemax_execution_time 是否符合预期
    • Server API 显示 FPM/FastCGIApache 2.0 Handler
  3. 快速重载配置

    # 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)的配置项可能略有差异,建议参考对应版本的官方文档。

抱歉,评论功能暂时关闭!