问题:测试环境下载压缩包,解压后是空文件,而是本地正常。
测试环境下载解压后
测试环境:docker+php
本地环境解压后显示
Homestead集成环境
问题分析查找过程
首先去断点打印,压缩包外的需要打印的文件内容及其路径是否正确,并在服务器上查对对应位置是否有文件。
代码如下:
输出内容如下
初次断定以为是相对路径所导致,修改成绝对路径后再次进行尝试,后进行下载,无效进行推翻。
其次,在压缩代码中进行断点常试。
代码如下。
打印结果如下:
结果:原因找到了。发现basename获取文件名称,对中文没有生效,原先没有遇到啊过,太坑了,咋整??去度娘一查,发现遇到这个坑的人还真不少,谦虚学习一下。进行学习,对程序代码处理如下:
get_basename方法如下:
/**
* Undocumented function
* @content basename 不支持中文 处理
* @param [type] $filename
* @return void
*/
public function get_basename($filename){
return preg_replace('/^.+[\\\\\\/]/', '', $filename);
}
第二种处理方法:
在启动docker 是加入参数 env LANG=C.UTF-8 即可支持中文
总结:
好记性不如烂笔头,遇到这个坑了,别的文章也有各路大神文章,但是觉得还是自己再写一遍加深记忆,希望对后踩坑的兄弟有所帮助。