·设为首页收藏本站📧邮箱修改🎁免费下载专区📒收藏夹👽聊天室📱AI智能体
返回列表 发布新帖

上传文件大概超过40m以上的文件都上传不了 New

211 1
发表于 2024-7-22 09:25:52 | 查看全部 阅读模式

马上注册,免费下载更多dz插件网资源。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
PHP设置的能上传100m,超时时间600s。在上传文件的时候大概超过40m左右的文件都上传不了提示undefined,不知道是怎么回事?
我知道答案 回答被采纳将会获得1 贡献 已有0人回答
我要说一句 收起回复

评论1

Discuz智能体Lv.8 发表于 前天 08:40 | 查看全部
根据您描述的Discuz上传文件异常情况, 结合Discuz开发手册和实际开发经验, 以下是可能导致问题的原因及解决方案:

**1. Web服务器层限制 (关键因素)**
- **Nginx环境**:检查`nginx.conf`中的`client_max_body_size`参数,需大于上传文件体积(建议设置为110M)
- **Apache环境**:确认`.htaccess`或`httpd.conf`中的`LimitRequestBody`配置值
- **解决方案**:在服务器配置中添加:
  1. # Nginx示例
  2. client_max_body_size 110m;
  3. client_body_timeout 1200s;
复制代码


**2. PHP流式上传限制**
- 检查`php.ini`中的以下参数:
  1. post_max_size = 110M
  2. memory_limit = 256M
  3. max_input_time = 1200
  4. upload_tmp_dir = "/path/to/tmp" (需确保目录可写)
复制代码

- 特别注意:`post_max_size`必须大于`upload_max_filesize`

**3. Discuz内部处理机制**
- 修改`/config/config_global.php`:
  1. $_config['memory']['limit'] = '256M';
  2. $_config['admincp']['runquery'] = 1; // 临时开启管理SQL功能
复制代码

- 在后台执行SQL语句:
  1. REPLACE INTO pre_common_setting (skey, svalue) VALUES ('attachsize', 102400);
复制代码


**4. 分块上传配置**
- 修改模板文件`template/default/common/header_common.htm`:
  1. // 在文件上传JS初始化处添加
  2. var uploader = WebUploader.create({
  3.     chunked: true,
  4.     chunkSize: 2*1024*1024, // 2MB分块
  5.     threads: 3
  6. });
复制代码


**5. 大文件上传优化**
- 创建`.user.ini`文件(适用于PHP-FPM):
  1. php_admin_value[memory_limit] = 256M
  2. php_admin_value[max_execution_time] = 1200
  3. php_admin_value[post_max_size] = 110M
复制代码


**6. 上传日志排查**
- 在`source/class/class_upload.php`中增加调试日志:
  1. public function upload() {
  2.     error_log('Upload Start: '.date('Y-m-d H:i:s').' Size: '.$this->file['size'], 3, '/tmp/upload.log');
  3.     //...原有代码...
  4. }
复制代码


**7. 二进制上传检测**
- 检查上传请求头是否包含:
  1. Content-Type: multipart/form-data; boundary=...
复制代码

- 对于超大文件建议使用二进制流上传方式

**注意事项:**
1. 修改配置后需重启PHP和Web服务
2. 上传大文件建议开启PHP的OPcache扩展
3. 检查服务器swap分区是否充足
4. 对于云主机环境需注意突发带宽限制

建议通过分段测试定位具体瓶颈:
1. 使用`dd`命令生成测试文件:
  1. dd if=/dev/zero of=testfile bs=1M count=100
复制代码

2. 使用curl模拟上传:
  1. curl -v -F "file=@testfile" -H "Expect:" http://yourdomain.com/upload.php
复制代码


若仍出现undefined错误,建议检查:
1. 浏览器开发者工具Network面板的原始响应
2. PHP错误日志(注意`display_errors`设置)
3. Web服务器的access/error日志

如需更深入的调试方案,可提供以下信息:
- 服务器环境具体版本(PHP/WebServer/OS)
- 上传时的完整请求头信息
- 错误发生时的服务器负载情况
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复

回复

 懒得打字嘛,点击右侧快捷回复【查看最新发布】   【应用商城享更多资源】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

图文热点
关闭

站长推荐上一条 /1 下一条

投诉/建议联系

discuzaddons@vip.qq.com

未经授权禁止转载,复制和建立镜像,
如有违反,按照公告处理!!!
  • 联系QQ客服
  • 添加微信客服

联系DZ插件网微信客服|最近更新|Archiver|手机版|小黑屋|DZ插件网! ( 鄂ICP备20010621号-1 )|网站地图 知道创宇云防御

您的IP:13.59.84.60,GMT+8, 2025-3-14 03:48 , Processed in 1.386504 second(s), 77 queries , Gzip On, Redis On.

Powered by Discuz! X5.0 Licensed

© 2001-2025 Discuz! Team.

关灯 在本版发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表