You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP 8环境下如何为指定虚拟主机修改upload_max_filesize与post_max_size?

PHP 8 + Apache + FPM 虚拟主机单独调整上传参数的解决方案

由于你当前使用的是PHP-FPM模式(而非PHP7时期的mod_php),Apache的php_value指令已不再生效——该指令仅适用于mod_php模块。针对虚拟主机单独配置PHP参数,有两种可靠方案:

方案一:使用PHP-FPM独立进程池(推荐,隔离性更强)

这种方式为目标虚拟主机创建专属的FPM进程池,参数完全独立:

  1. 复制默认池配置,创建新的虚拟主机专属池:
sudo cp /etc/php/8.1/fpm/pool.d/www.conf /etc/php/8.1/fpm/pool.d/your-domain.conf
  1. 编辑新的池配置文件,修改核心内容:
    • 将配置块开头的[www]改为自定义名称,比如[your-domain]
    • 修改监听套接字路径,避免和默认池冲突:
      listen = /var/run/php/php8.1-fpm-your-domain.sock
      
    • 添加需要调整的PHP参数(用php_admin_value确保无法被用户级配置覆盖):
      php_admin_value[upload_max_filesize] = 10M
      php_admin_value[post_max_size] = 10M
      
    • 可选:调整user和group参数,使其与虚拟主机网站目录的权限匹配(通常为www-data)
  2. 重启PHP-FPM服务使配置生效:
sudo systemctl restart php8.1-fpm
  1. 修改Apache虚拟主机配置,将PHP请求指向新的FPM套接字:
<VirtualHost *:80>
    # 原有配置:ServerName、DocumentRoot等
    <FilesMatch \.php$>
        SetHandler proxy:unix:/var/run/php/php8.1-fpm-your-domain.sock|fcgi://localhost
    </FilesMatch>
    # 移除原有的php_value指令,已不再生效
</VirtualHost>
  1. 重启Apache服务:
sudo systemctl restart apache2

方案二:使用.user.ini文件(轻量快捷)

如果不需要独立进程池,可通过网站根目录下的.user.ini文件设置参数:

  1. 在虚拟主机的网站根目录(DocumentRoot指向的路径)创建文件:
sudo touch /var/www/your-domain/public/.user.ini
sudo chown www-data:www-data /var/www/your-domain/public/.user.ini
  1. 在文件中添加参数配置:
upload_max_filesize = 10M
post_max_size = 10M
  1. 验证PHP-FPM是否允许.user.ini:检查/etc/php/8.1/fpm/php.ini中的user_ini.filename参数是否为.user.ini(默认开启),若修改过则需重启PHP-FPM。

验证配置

在网站根目录创建phpinfo.php文件:

<?php phpinfo(); ?>

访问该文件,查看upload_max_filesize和post_max_size的Local value是否显示为10M,确认配置生效。

内容的提问来源于stack exchange,提问作者Free Radical

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 10:05:21