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

如何修改Apache2默认临时目录以避免磁盘占满?

如何修改Apache2默认临时目录以避免磁盘占满?

太懂你这种/tmp盘空间不够的糟心了!尤其是用WebDAV传大文件时,Apache偷偷在/tmp里生成modproxy开头的临时文件夹,直接把小容量的/tmp塞满导致上传失败,改了PHP的upload_tmp_dir还不管用——毕竟这是Apache层面的缓存,不是PHP的锅。

我给你整理几个靠谱的解决办法,从全局到站点级都有,你按需选:

一、针对mod_proxy的专属解决(最精准)

你提到Apache生成了modproxy+random_name的临时文件夹,这说明是mod_proxy模块在缓存上传内容,这时候改TMPDIR可能没用,得用mod_proxy专属的配置指令:

  • 打开Apache的全局配置文件(比如/etc/apache2/apache2.conf)或者对应站点的vhost配置文件
  • 加入下面的配置,指定mod_proxy的临时目录:
    # 可以全局配置,也可以放到对应的<VirtualHost>块里针对单个站点
    ProxyTempDir /filestore/temp
    
  • 保存后重载Apache配置:sudo systemctl reload apache2,或者重启服务确保生效。

二、全局修改Apache的临时目录(适用于所有站点)

如果想让整个Apache服务都用新的临时目录,修改envvars文件是最稳妥的:

  1. 找到Apache的envvars文件,通常路径是/etc/apache2/envvars(不同系统可能略有差异,比如CentOS可能在/etc/sysconfig/httpd)
  2. 在文件末尾添加:
    export TMPDIR=/filestore/temp
    
  3. 关键!必须给新目录配置正确的权限,让Apache的运行用户(通常是www-data,部分系统是apache)能读写:
    sudo chown www-data:www-data /filestore/temp
    sudo chmod 750 /filestore/temp
    
  4. 重启Apache服务:sudo systemctl restart apache2

    之前你改了envvars没生效,大概率是没重启服务,或者权限没配置对导致Apache没法访问新目录。

三、站点级(vhost)单独配置(针对单个站点)

如果只想给某个特定站点换临时目录,不想影响其他站点,可以在对应的vhost配置里加环境变量:

<VirtualHost *:80>
    ServerName yourdomain.com
    # 给当前站点指定临时目录
    SetEnv TMPDIR /filestore/temp
    # 其他站点配置...
</VirtualHost>

保存后重载Apache配置即可,同样要确保新目录的权限没问题。

验证是否生效的小技巧

  • 写个简单的PHP脚本放到站点目录里,访问它看看TMPDIR是不是已经改成新目录了:
    <?php
    echo "当前TMPDIR:" . getenv('TMPDIR');
    ?>
    
  • 或者传个大文件,之后去/filestore/temp里看看有没有生成临时文件,同时检查/tmp里有没有新增的modproxy相关文件夹,就知道是不是生效了。

备注:内容来源于stack exchange,提问作者Gonzalo Cao Cabeza de Vaca

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.15 13:43:10