PHP打压缩包无中文文件

171 阅读1分钟

问题:测试环境下载压缩包,解压后是空文件,而是本地正常。

测试环境下载解压后

测试环境:docker+php

image.png

本地环境解压后显示

Homestead集成环境

image.png

问题分析查找过程

首先去断点打印,压缩包外的需要打印的文件内容及其路径是否正确,并在服务器上查对对应位置是否有文件。

代码如下:

image.png

输出内容如下 image.png

初次断定以为是相对路径所导致,修改成绝对路径后再次进行尝试,后进行下载,无效进行推翻。

其次,在压缩代码中进行断点常试。

代码如下。

image.png

打印结果如下:

image.png

结果:原因找到了。发现basename获取文件名称,对中文没有生效,原先没有遇到啊过,太坑了,咋整??去度娘一查,发现遇到这个坑的人还真不少,谦虚学习一下。进行学习,对程序代码处理如下:

image.png

get_basename方法如下:

/** * Undocumented function * @content basename 不支持中文 处理 * @param [type] filename@returnvoid/publicfunctiongetbasename(filename * @return void */ public function get_basename(filename){

    return preg_replace('/^.+[\\\\\\/]/', '', $filename);
}

第二种处理方法:

在启动docker 是加入参数 env LANG=C.UTF-8 即可支持中文

总结:

好记性不如烂笔头,遇到这个坑了,别的文章也有各路大神文章,但是觉得还是自己再写一遍加深记忆,希望对后踩坑的兄弟有所帮助。 ———————————————— 版权声明:本文为CSDN博主「kangsf1989」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:blog.csdn.net/kangsf1989/…