在centos系统上用php处理中文文件名
环境介绍: apache: utf8, mysql: utf8, php页面 utf8; centos lang: en_utf8
任务的简单描述,通过类似
http://www.shumo.com/file.php?id=2 的uri来获取编号为id的文件流,file.php通过访问数据库表来获取中文文件名
,然后通过fpassthru向客户端输出文件数据。
问题:数据中获取的文件名,file_exists 判定不存在,但是文件明明是存在的。
莫名其妙,于是在本机上写测试代码,发现也有问题。
解决步骤:
1、检查系统文件名的编码, 通过编写测试代码
$dir = dirname(__FILE__) . "/zh_files/";
$handle = @opendir($dir) or die("Cannot open " . $dir);
while ($file = readdir($handle)) {
if ($file != '.' && $file != '..') {
echo "$file <br />";
}
}
closedir($handle);
通过浏览器选择编码,使中文文件名可以正常显示,以此确定系统的中文编码。
通过这一步骤,本机(windows)上,把从数据库中取得的中文名转换编码,任务就OK了
$filename = mb_convert_encoding($filename, "GBK", "UTF-8");
但是在centos上还是不行。
2、检查从数据库中取出的数据编码,虽然数据库是默认utf8的,但是取出的数据却不一定是utf8的。后来查找发现有一个命令,显式指定数据库的链接方式
SET NAMES UTF8;
即在建立连接后,运行该命令
@ $db = new mysqli(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_DATABASE);
if (mysqli_connect_errno()) {
die('connect error');
}
$db->query("set names utf8");
考,问题解决了。
另:
因为有几百个小文件需要上传到centos上,提供下载,随即用winrar打了包,上传到ftp上,居然解压不了yum install unrar不行, 下了一个rar linux版本的,make后发现GLIBC2.7 not found; 这个不知道怎么解决;
所以还是下载了一个7-zip, 先压缩选择tar, 再压缩选择gzip, 打包成 name.tar.gz. 再上传通过tar解压。
真是郁闷,这些事情搞了半个晚上!
分享到:
相关推荐
在Linux环境下,特别是CentOS操作系统中,PHP是用于开发Web应用程序的常用脚本语言,而PostgreSQL(简称pgsql)则是一种强大的开源关系型数据库系统。为了使PHP能够与PostgreSQL数据库进行交互,需要安装和配置PHP的...
总结一下,要在CentOS 6.5上安装PHP的mcrypt插件,你需要先更新系统,添加EPEL仓库,安装PHP,然后在无网络环境下使用提供的rpm包安装mcrypt,最后配置PHP并重启服务。通过这个过程,你可以为你的服务器提供一个完整...
在本主题中,我们将深入探讨如何在CentOS操作系统上安装Redis服务器,并且集成phpRedis扩展,以便在PHP应用中利用Redis作为持久化数据存储和会话管理。首先,让我们了解Redis的基本概念,然后逐步讲解安装过程。 ...
标题 "centos nginx php mysql 集成" 涉及到的是在 CentOS 操作系统上搭建一个常见的 Web 开发环境,即 LEMP (Linux, Nginx, PHP, MySQL) 堆栈。这个环境广泛用于静态内容的高效分发和动态内容的处理,比如运行基于 ...
在CentOS系统中搭建LAMP(Linux + Nginx + MySQL + PHP)环境是一项常见的任务,主要用于构建Web服务器。LAMP架构是许多网站和应用程序的基础,提供了强大的性能和稳定性。以下是在CentOS下安装Nginx、MySQL和PHP...
“源码”标签可能意味着讨论的内容涉及到编译自源代码的软件包,比如在CentOS 6.3上构建和安装软件时,用户可能需要从源代码编译,因为某些软件没有预编译的二进制包。这通常涉及使用GCC编译器、Makefile以及相关的...
这是由于操作系统和PHP解释器对中文文件名支持的限制所致。在某些系统中,中文字符可能因为编码问题导致路径无法被正确解析。 问题的根本在于编码的不一致。当PHP脚本的内部编码与文件系统使用的编码不一致时,就会...
【Eclipse IDE 知识点详解...一旦完成这些步骤,开发者就可以在CentOS 7系统上利用Eclipse进行高效便捷的开发工作。此外,Eclipse的插件生态系统非常丰富,可以根据个人或团队的需求安装相应的开发插件,提升开发效率。
【标题】"CentOS-7-x86-64-Minimal-2009-迷你版系统镜像"指的是CentOS操作系统的一个轻量级版本,适用于那些希望安装基础环境而不包含额外应用软件的用户。这个版本是为服务器、开发环境或者对资源要求极低的场景...
在Linux系统中,CentOS 7是一个非常流行的服务器操作系统,被广泛用于各种应用程序的部署,包括媒体服务。BBC(British Broadcasting Corporation)是英国最大的广播公司,其提供的服务可能包括流媒体、播客或其他...
【压缩包子文件的文件名称列表】:虽然只有一个文件名“centos6.4”,但我们可以推断这可能是CentOS 6.4的ISO映像文件,用于安装系统。这样的ISO文件通常包含了完整的操作系统,用户可以通过它来创建安装介质,如DVD...
综上所述,这个RPM包是为了解决在RHEL 5.4或CentOS 5.4系统上挂载和读写NTFS分区的问题。用户需要下载这个包,然后使用RPM工具进行安装,之后便可以通过`mount`命令以读写模式挂载NTFS分区。这使得Linux系统能更好地...
在CentOS 7系统上,最小化安装后,通常不会预装Apache服务器,所以需要手动安装。安装命令使用yum,它是CentOS的包管理器。 安装过程: 1. 首先更新系统的包索引并安装httpd软件包。 ``` yum install -y httpd `...
总结来说,这两个脚本的目的是在CentOS 7系统上快速部署Zabbix监控系统和Grafana可视化平台,通过自动化处理大部分手动配置工作,极大地提高了部署效率。使用这些脚本时,务必确保了解每个步骤的作用,以便在出现...
### CentOS 6.5 下安装 FFMPEG 的详细步骤及注意事项 #### 一、环境准备与背景介绍 FFMPEG 是一款强大的多媒体...通过以上步骤,不仅可以成功安装 FFmpeg,还能确保 FFmpeg 在系统中正常工作,满足多媒体处理的需求。
Server php php-devel php-mysql可以用rpm包安装,或者直接用yum安装#yum install httpd mysql-server php php-devel php-mysql先来了解一下apache 2.0这个版本的相关结构,这样才能知道如何处理我们的网页数据/etc/...
表明这是一个PHP扩展包,用于处理图像操作,具体是PHP的Imagick扩展,版本为3.4.4,适配PHP 7.3版本,是非线程安全(NTS)版本,采用Visual C++ 15(即Visual Studio 2017)编译,且是针对64位(x64)系统的。...
这里,`fastcgi_pass`指定了PHP-FPM(FastCGI进程管理器)的监听地址,`fastcgi_index`是默认的PHP文件名,`SCRIPT_FILENAME`参数告诉NginxPHP脚本的位置。 对于MySQL,确保其服务已启动并设置自动启动: ```bash ...
在Debian或Ubuntu系统上,你可以通过以下命令安装PHP: ```bash sudo apt-get update sudo apt-get install php ``` 在CentOS或Fedora上,使用的是`yum`(较旧版本)或`dnf`(较新版本): ```bash sudo yum ...
这里的`redis.so`是编译后生成的扩展文件名,路径可能因系统不同而异,你可能需要替换为实际路径。 5. **重启PHP服务**:保存配置文件后,重启PHP-FPM或Apache/Nginx等Web服务器,使配置生效。 6. **测试安装**:...