环境:
1、ftp,上传受windows影响,编码是GBK或GB2312
2、PHP,受WEB系统影响,用UTF-8;
3、主机系统:utf-8
问题:
用php来读FTP上传的文件列表:
shell_exec( 'ls -l' .escapeshellarg( $path) );
经常读不到文件。
经调试,发现shell_exec很多时候输出: ls -l ''
也就是空文件。
原因及解决:
escapeshellarg受locale的影响,在有汉字的时候,错误的编码会导致它的返回结果为空。
所以一定要用setlocale()函数来设置locale:
setlocale('GBK');
另外提醒:由于web系统 是utf-8,为了防止其他意外,最好在escapeshellarg后再setlocale('utf-8');
lsstarboy.blog.chinaunix.net,转载请注明出处.......
--end--
阅读(2378) | 评论(0) | 转发(0) |