禅道 21.1 Docker 部署版:修改文件上传限制(post_max_size / upload_max_filesize)
在禅道(Zentao)Docker 部署环境中,上传大文件时经常会因为 PHP 的上传限制导致失败,比如常见的 post_max_size、upload_max_filesize 过小。
本文把"页面级"和"服务级"两处限制一起讲清楚,并给出一套推荐参数组合。
一、准备知识:三个核心参数关系
PHP 上传限制主要看这三个参数:
memory_limit:PHP 脚本最大可用内存post_max_size:HTTP POST 请求体最大值(一次请求总大小)upload_max_filesize:单个上传文件最大值
建议始终保持:
memory_limit > post_max_size > upload_max_filesize
否则可能出现"单文件限制已调大,但仍上传失败"的情况。
二、修改页面限制(.htaccess / .ztaccess)
很多部署环境会在目录级配置文件里通过 .htaccess / .ztaccess 覆盖 PHP 上传参数。
你需要先进入容器,找到这两个文件所在位置并修改。
1)进入容器
bash
docker exec -it 83b bash
说明:
83b需要替换成你的禅道容器 ID/名称。
2)查找配置文件
bash
find ./ -name .htaccess
find ./ -name .ztaccess

3)修改上传大小
把下面两行改成你想要的大小(示例为 100M):
我的容器进入默认就是/apps/zentao
bash
/apps/zentao/www/.htaccess 和/apps/zentao/www/.ztaccess
vi .htaccess
vi .ztaccess
apache
php_value post_max_size 100M
php_value upload_max_filesize 100M
三、修改服务上传限制(php.ini)
如果页面级修改没有生效,或上传仍失败,则需要修改容器内的 php.ini。
1)查找 php.ini
bash
find ./ -name php.ini
常见路径示例:
/opt/zbox/etc/php/php.ini

2)修改以下参数
建议同时修改三项,并保持前面说的大小关系:
ini
memory_limit = 512M
post_max_size = 128M
upload_max_filesize = 128M
注意:不要写错参数名,正确的是
upload_max_filesize(不要拼写成upload_max_filessize)。
3)(可选)调整超时参数
如果遇到"大文件上传过程中超时",可以适当调整:
ini
max_execution_time = 600
max_input_time = 600
四、重启禅道镜像使配置生效
bash
docker restart 83b
五、验证是否生效
- 使用同一个接口上传一个接近你设置上限的文件
- 如果仍失败:
- 检查
.htaccess/.ztaccess是否改在实际生效的目录 - 检查
php.ini是否真的被加载 - 如果你前面还有 Nginx / 网关,确认它没有额外的
client_max_body_size限制

- 检查
总结
禅道 Docker 版修改上传限制的关键是两处一起改:
.htaccess/.ztaccess:post_max_size、upload_max_filesizephp.ini:memory_limit、post_max_size、upload_max_filesize- 修改后必须
docker restart
按这套做完,一般就能解决上传大文件失败问题。