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

在FPM/FastCGI虚拟主机中设置PHP限制

解决Fedora 27下Apache+PHP-FPM虚拟主机独立PHP配置问题

Hey there! 你的判断完全正确——Fedora 27默认确实采用PHP-FPM搭配Apache,而非传统的mod_php,这正是你之前操作失效的核心原因。下面给你两种实用方案,从最规范的开始:

方法1:为虚拟主机创建独立PHP-FPM池(推荐)

这种方式能让每个虚拟主机拥有完全隔离的PHP运行环境,参数配置更灵活彻底。

步骤1:创建独立的PHP-FPM池配置文件

Fedora的PHP-FPM池配置都存放在/etc/php-fpm.d/目录,复制默认模板来生成新配置:

cp /etc/php-fpm.d/www.conf /etc/php-fpm.d/pokus.cz.conf

编辑新生成的pokus.cz.conf,修改关键配置项:

# 唯一的池名称
[pokus.cz]

# 自定义监听套接字路径,确保和其他池不重复
listen = /run/php-fpm/pokus.cz.sock

# 设置套接字权限,和Apache用户组一致
listen.owner = apache
listen.group = apache
listen.mode = 0660

# 运行进程的用户组,匹配Apache配置
user = apache
group = apache

# 配置你需要的PHP参数,比如memory_limit
php_admin_value[memory_limit] = 64M
# 可按需添加其他参数
php_admin_value[upload_max_filesize] = 20M
php_admin_value[post_max_size] = 25M

# 进程管理配置(可根据服务器资源调整)
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35

步骤2:修改虚拟主机配置,指向新FPM池

打开你的虚拟主机配置文件(比如/etc/httpd/conf.d/vhosts.d/pokus.cz.conf),添加PHP-FPM代理规则:

<VirtualHost *:80>
    ServerName pokus.cz
    DocumentRoot /var/www/pokus.cz/public_html

    <Directory /var/www/pokus.cz/public_html>
        AllowOverride All
        Require all granted
    </Directory>

    # 将PHP请求转发到自定义的FPM套接字
    <FilesMatch \.php$>
        SetHandler "proxy:unix:/run/php-fpm/pokus.cz.sock|fcgi://localhost/"
    </FilesMatch>
</VirtualHost>

步骤3:重启服务生效

systemctl restart php-fpm
systemctl restart httpd

方法2:通过环境变量传递PHP参数(适合简单需求)

如果不想创建独立池,也可以通过Apache环境变量给共享FPM池传递参数,灵活性稍弱但操作更简便:

步骤1:修改默认FPM池配置

打开/etc/php-fpm.d/www.conf,确保允许保留外部环境变量:

clear_env = no

步骤2:在虚拟主机配置中添加环境变量

<VirtualHost *:80>
    ServerName pokus.cz
    DocumentRoot /var/www/pokus.cz/public_html

    # 设置PHP参数,memory_limit这类全局参数建议用PHP_ADMIN_VALUE
    SetEnv PHP_ADMIN_VALUE "memory_limit=64M"
    # 非全局参数可用PHP_VALUE
    # SetEnv PHP_VALUE "upload_max_filesize=20M"

    <Directory /var/www/pokus.cz/public_html>
        AllowOverride All
        Require all granted
    </Directory>

    # 指向默认FPM池的代理配置
    <FilesMatch \.php$>
        SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost/"
    </FilesMatch>
</VirtualHost>

步骤3:重启服务

systemctl restart php-fpm
systemctl restart httpd

验证配置是否生效

在虚拟主机根目录创建phpinfo.php文件:

<?php phpinfo(); ?>

访问http://pokus.cz/phpinfo.php,查找memory_limit项确认是否生效;如果用方法1,还能看到Pool项显示为pokus.cz。


内容的提问来源于stack exchange,提问作者Tomáš Novotný

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:26:20