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

如何在Ubuntu Apache2环境下为各站点单独配置PHP指令?

实现Ubuntu Apache2+PHP多站点独立配置参数方案

根据你提到的PHP_INI模式和需求,下面分两种常见的Apache+PHP部署场景给出具体实现方法:

一、PHP以Apache模块(mod_php)运行时

这种场景下可直接在Apache虚拟主机配置中单独设置站点参数,优先级高于全局php.ini。

1. 编辑站点Apache配置文件

每个站点的配置文件位于/etc/apache2/sites-available/目录下,比如sitea.conf、siteb.conf,编辑对应文件的<VirtualHost>块:

sitea.com配置示例

<VirtualHost *:80>
    ServerName sitea.com
    DocumentRoot /var/www/sitea/public_html

    # 上传参数配置
    php_value upload_max_filesize 50M
    php_value max_file_uploads 20
    # PHP_INI_SYSTEM级别的参数需用php_admin_value
    php_admin_value upload_tmp_dir /var/www/sitea/tmp_uploads
    # 唯一session名称
    php_value session.name SITEA_SESSID

    # 其他常规配置(日志、权限等)
    ErrorLog ${APACHE_LOG_DIR}/sitea.error.log
    CustomLog ${APACHE_LOG_DIR}/sitea.access.log combined
</VirtualHost>

siteb.com配置示例

<VirtualHost *:80>
    ServerName siteb.com
    DocumentRoot /var/www/siteb/public_html

    php_value upload_max_filesize 5M
    php_value max_file_uploads 10
    php_admin_value upload_tmp_dir /var/www/siteb/tmp_uploads
    php_value session.name SITEB_SESSID

    ErrorLog ${APACHE_LOG_DIR}/siteb.error.log
    CustomLog ${APACHE_LOG_DIR}/siteb.access.log combined
</VirtualHost>

2. 创建并配置专属临时上传目录

# 创建目录
sudo mkdir /var/www/sitea/tmp_uploads /var/www/siteb/tmp_uploads
# 设置权限(确保PHP进程可读写)
sudo chown www-data:www-data /var/www/sitea/tmp_uploads /var/www/siteb/tmp_uploads
sudo chmod 700 /var/www/sitea/tmp_uploads /var/www/siteb/tmp_uploads

3. 生效配置

sudo systemctl restart apache2

二、PHP以FPM(FastCGI Process Manager)运行时

这种场景下推荐为每个站点创建独立的FPM池,实现完全隔离的PHP配置。

1. 创建站点专属FPM池配置

FPM池配置位于/etc/php/[你的PHP版本]/fpm/pool.d/目录下,比如sitea.conf:

sitea.com池配置示例

[sitea]
user = www-data
group = www-data
listen = /run/php/php8.2-fpm-sitea.sock
listen.owner = www-data
listen.group = www-data

# 进程管理配置(按需调整)
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3

# PHP参数配置
php_admin_value[upload_max_filesize] = 50M
php_admin_value[max_file_uploads] = 20
php_admin_value[upload_tmp_dir] = /var/www/sitea/tmp_uploads
php_admin_value[session.name] = SITEA_SESSID

siteb.com池配置示例

[siteb]
user = www-data
group = www-data
listen = /run/php/php8.2-fpm-siteb.sock
listen.owner = www-data
listen.group = www-data

pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3

php_admin_value[upload_max_filesize] = 5M
php_admin_value[max_file_uploads] = 10
php_admin_value[upload_tmp_dir] = /var/www/siteb/tmp_uploads
php_admin_value[session.name] = SITEB_SESSID

2. 配置Apache关联对应FPM池

编辑站点的Apache配置文件,添加PHP文件的FPM处理规则:

sitea.com Apache配置示例

<VirtualHost *:80>
    ServerName sitea.com
    DocumentRoot /var/www/sitea/public_html

    # 关联FPM池
    <FilesMatch \.php$>
        SetHandler "proxy:unix:/run/php/php8.2-fpm-sitea.sock|fcgi://localhost/"
    </FilesMatch>

    ErrorLog ${APACHE_LOG_DIR}/sitea.error.log
    CustomLog ${APACHE_LOG_DIR}/sitea.access.log combined
</VirtualHost>

siteb.com的配置只需替换sock路径为/run/php/php8.2-fpm-siteb.sock即可。

3. 创建临时上传目录(同mod_php步骤)

sudo mkdir /var/www/sitea/tmp_uploads /var/www/siteb/tmp_uploads
sudo chown www-data:www-data /var/www/sitea/tmp_uploads /var/www/siteb/tmp_uploads
sudo chmod 700 /var/www/sitea/tmp_uploads /var/www/siteb/tmp_uploads

4. 生效配置

sudo systemctl restart php8.2-fpm
sudo systemctl restart apache2

三、参数与PHP_INI模式对应说明

参数PHP_INI模式可配置方式
upload_max_filesizePHP_INI_PERDIRApache配置、.user.ini、FPM池配置
max_file_uploadsPHP_INI_PERDIRApache配置、.user.ini、FPM池配置
upload_tmp_dirPHP_INI_SYSTEMApache配置(php_admin_value)、FPM池配置、php.ini
session.namePHP_INI_ALL所有配置方式(含代码中ini_set())

四、验证配置生效

在每个站点根目录创建phpinfo.php文件:

<?php phpinfo(); ?>

访问该文件,查找对应参数值,确认是否符合配置要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 07:45:19