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进程池,参数完全独立:
- 复制默认池配置,创建新的虚拟主机专属池:
sudo cp /etc/php/8.1/fpm/pool.d/www.conf /etc/php/8.1/fpm/pool.d/your-domain.conf
- 编辑新的池配置文件,修改核心内容:
- 将配置块开头的
[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)
- 将配置块开头的
- 重启PHP-FPM服务使配置生效:
sudo systemctl restart php8.1-fpm
- 修改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>
- 重启Apache服务:
sudo systemctl restart apache2
方案二:使用.user.ini文件(轻量快捷)
如果不需要独立进程池,可通过网站根目录下的.user.ini文件设置参数:
- 在虚拟主机的网站根目录(
DocumentRoot指向的路径)创建文件:
sudo touch /var/www/your-domain/public/.user.ini sudo chown www-data:www-data /var/www/your-domain/public/.user.ini
- 在文件中添加参数配置:
upload_max_filesize = 10M post_max_size = 10M
- 验证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
相关产品推荐
相关产品推荐

