GLPI API文件上传报错ERROR_UPLOAD_FILE_TOO_BIG_POST_MAX_SIZE,求正确方法
GLPI API文件上传错误解决及正确实现
错误ERROR_UPLOAD_FILE_TOO_BIG_POST_MAX_SIZE的解决步骤
这个错误由POST请求尺寸限制触发,需从以下层面调整:
调整PHP配置项
修改php.ini的两个关键参数(有权限的情况),或通过ini_set在代码中临时设置(取决于服务器允许与否):post_max_size: 设置为大于等于目标文件大小,例如20M(需确保值大于upload_max_filesize)upload_max_filesize: 设置为不小于目标文件大小,例如15M
修改后重启PHP-FPM或Web服务器生效。
检查GLPI系统设置
登录GLPI后台,进入设置 > 常规 > 文件上传,确认「最大文件大小」配置值,该值不能超过PHP中upload_max_filesize的设置,按需调整至合适数值。
正确的GLPI API文件上传代码实现
你代码中用@指定文件路径是旧版PHP用法,现在应使用CURLFile类处理文件上传,确保请求以multipart/form-data格式发送,避免异常。修改后的代码如下:
public static function uploadDocument(TicketRequest $request) { $client = new static(); if ($request->hasFile('file')) { $file = $request->file('file'); $file_name = $file->getClientOriginalName(); $file_path = $file->getPathname(); $file_mime = $file->getMimeType(); $uploadManifest = [ "input" => [ "name" => $request['document_title'], "_filename" => [$file_name], ], ]; // 用CURLFile替代@语法,适配新版PHP文件上传规范 $uploaded_file = new \CURLFile($file_path, $file_mime, $file_name); $result = $client->upload("Document", [ 'uploadManifest' => json_encode($uploadManifest), 'filename[0]' => $uploaded_file, ]); } }
额外注意事项
- 确保你的
client类的upload方法正确处理multipart/form-data请求,而非默认的application/json,文件上传必须使用多部分表单格式。 - 上传大文件时,可检查服务器的
max_input_time和memory_limit配置,避免超时或内存不足导致上传失败。
内容的提问来源于stack exchange,提问作者DevEcho
相关产品推荐
相关产品推荐

