PHP上传临时目录配置,大文件上传优化

PHP上传临时目录配置与大文件上传优化实操

PHP上传临时目录配置和大文件上传优化是很多站长和运维新手都会遇到的难题。
当用户上传较大文件时,如果服务器参数没有调好,很容易出现上传失败、进度卡住或提示“文件过大”等情况。
本文将手把手带你检查并调整PHP的临时目录、上传大小限制以及Web服务器的相关参数,让大文件上传变得稳定可靠。

先搞清上传流程和临时目录作用

PHP处理文件上传时,会先把文件保存到一个临时目录,等脚本执行完毕后再由代码决定是否移动到目标位置。
如果临时目录不存在、没有写权限,或者空间不足,上传就会直接失败。

默认情况下,Linux系统中PHP的临时目录通常是 /tmp,Windows下一般是系统临时目录。
你可以通过创建一个PHP文件来查看当前配置:

在浏览器中访问这个文件,搜索 upload_tmp_dir,如果显示 no value,说明使用的是系统默认临时目录。

调整PHP上传相关参数

要让大文件上传成功,需要修改 php.ini 中的几个关键参数。
先找到正在使用的 php.ini 文件位置,可以新建一个PHP文件写入:

在输出中查找 Loaded Configuration File,这个路径就是当前生效的配置文件。

用编辑器打开 php.ini,找到并修改以下参数:

file_uploads = On
upload_tmp_dir = /tmp/php_uploads
upload_max_filesize = 100M
post_max_size = 100M
max_execution_time = 300
max_input_time = 300
memory_limit = 256M

参数说明:

  • upload_max_filesize 控制单个上传文件的最大尺寸。
  • post_max_size 必须大于或等于 upload_max_filesize,因为表单提交的数据总量不能超过这个值。
  • max_execution_time 表示脚本最长执行时间,大文件上传需要适当加大。
  • max_input_time 是接收输入数据的时间限制,也要相应增加。
  • memory_limit 建议不低于 post_max_size 的两倍,避免内存不足。

修改完成后保存,并重启PHP服务使配置生效。
如果使用宝塔面板,可以在“软件商店”找到对应PHP版本,点击“设置”->“配置修改”来编辑,然后重载配置。

创建并授权临时目录

如果自定义了 upload_tmp_dir,必须确保该目录存在且Web服务器用户有写权限。
以 /tmp/php_uploads 为例:

mkdir -p /tmp/php_uploads
chown www-data:www-data /tmp/php_uploads
chmod 755 /tmp/php_uploads

注意:www-data 是Ubuntu/Debian下常见的Web用户,CentOS下通常是 apache 或 nginx,请根据实际环境替换。

调整Nginx或Apache的上传限制

即使PHP参数调大了,Web服务器也可能拦截大文件。
Nginx默认允许的客户端请求体大小是1M,需要修改 nginx.conf 或站点配置文件:

client_max_body_size 100M;

添加到 http、server 或 location 块中,然后重载Nginx:

nginx -t && nginx -s reload

如果使用Apache,一般不需要额外设置,但若启用了 mod_security 等模块,可能需要调整其规则。

验证配置是否生效

创建一个测试PHP文件,输出当前上传限制:

在浏览器访问,确认数值已更新。
然后实际上传一个接近限制大小的文件,观察是否成功。
如果仍然失败,检查PHP错误日志(通常在 /var/log/php_errors.log 或宝塔面板的日志页面),根据报错进一步排查。

常见问题排错

上传大文件时若出现“413 Request Entity Too Large”,通常是Nginx的 client_max_body_size 设置过小。
若提示“PHP Warning: File upload error - unable to create a temporary file”,则检查临时目录权限和磁盘空间。
如果上传进度到100%后卡住,可能是 max_execution_time 或 max_input_time 太短,适当增加。

另外,
使用宝塔面板时,
除了PHP配置,
还要在“网站”->“设置”->“配置文件”中检查是否有Nginx的上传限制,
以及“软件商店”->“PHP”->“性能调整”中的参数是否合理。

总结

通过调整PHP的 upload_max_filesize、post_max_size、upload_tmp_dir 以及Nginx的 client_max_body_size,并确保临时目录权限正确,就能解决大部分大文件上传问题。
操作时建议先备份配置文件,改完后重启服务并实际测试。
如果依然失败,优先查看错误日志,根据具体报错定位原因。

分享到:
上一篇
PHP进程大量堆积,网站502故障处理流程
下一篇
SQL注入防御预编译,CMS程序代码改造
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意