`
shumo
  • 浏览: 9598 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

centos系统上php处理中文文件名

阅读更多

在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解压。

 

真是郁闷,这些事情搞了半个晚上!

分享到:
评论

相关推荐

    centos下php安装pgsql和pdo_pgsql扩展,这是另一种方法,很简便,用.so文件来安装

    在Linux环境下,特别是CentOS操作系统中,PHP是用于开发Web应用程序的常用脚本语言,而PostgreSQL(简称pgsql)则是一种强大的开源关系型数据库系统。为了使PHP能够与PostgreSQL数据库进行交互,需要安装和配置PHP的...

    centos 安装php所需的mcrypt各种插件

    总结一下,要在CentOS 6.5上安装PHP的mcrypt插件,你需要先更新系统,添加EPEL仓库,安装PHP,然后在无网络环境下使用提供的rpm包安装mcrypt,最后配置PHP并重启服务。通过这个过程,你可以为你的服务器提供一个完整...

    CentOS安装Redis和phpRedis扩展记录

    在本主题中,我们将深入探讨如何在CentOS操作系统上安装Redis服务器,并且集成phpRedis扩展,以便在PHP应用中利用Redis作为持久化数据存储和会话管理。首先,让我们了解Redis的基本概念,然后逐步讲解安装过程。 ...

    centos nginx php mysql 集成

    标题 "centos nginx php mysql 集成" 涉及到的是在 CentOS 操作系统上搭建一个常见的 Web 开发环境,即 LEMP (Linux, Nginx, PHP, MySQL) 堆栈。这个环境广泛用于静态内容的高效分发和动态内容的处理,比如运行基于 ...

    在centos下安装nginx+mysql+php所需要的文件和扩展

    在CentOS系统中搭建LAMP(Linux + Nginx + MySQL + PHP)环境是一项常见的任务,主要用于构建Web服务器。LAMP架构是许多网站和应用程序的基础,提供了强大的性能和稳定性。以下是在CentOS下安装Nginx、MySQL和PHP...

    CentOS6.3

    “源码”标签可能意味着讨论的内容涉及到编译自源代码的软件包,比如在CentOS 6.3上构建和安装软件时,用户可能需要从源代码编译,因为某些软件没有预编译的二进制包。这通常涉及使用GCC编译器、Makefile以及相关的...

    PHP中file_exists()判断中文文件名无效的解决方法

    这是由于操作系统和PHP解释器对中文文件名支持的限制所致。在某些系统中,中文字符可能因为编码问题导致路径无法被正确解析。 问题的根本在于编码的不一致。当PHP脚本的内部编码与文件系统使用的编码不一致时,就会...

    centos7安装eclipse1

    【Eclipse IDE 知识点详解...一旦完成这些步骤,开发者就可以在CentOS 7系统上利用Eclipse进行高效便捷的开发工作。此外,Eclipse的插件生态系统非常丰富,可以根据个人或团队的需求安装相应的开发插件,提升开发效率。

    CentOS-7-x86-64-Minimal-2009-迷你版系统镜像

    【标题】"CentOS-7-x86-64-Minimal-2009-迷你版系统镜像"指的是CentOS操作系统的一个轻量级版本,适用于那些希望安装基础环境而不包含额外应用软件的用户。这个版本是为服务器、开发环境或者对资源要求极低的场景...

    centos 7 安装bbc.zip

    在Linux系统中,CentOS 7是一个非常流行的服务器操作系统,被广泛用于各种应用程序的部署,包括媒体服务。BBC(British Broadcasting Corporation)是英国最大的广播公司,其提供的服务可能包括流媒体、播客或其他...

    centos6.4_jb51net

    【压缩包子文件的文件名称列表】:虽然只有一个文件名“centos6.4”,但我们可以推断这可能是CentOS 6.4的ISO映像文件,用于安装系统。这样的ISO文件通常包含了完整的操作系统,用户可以通过它来创建安装介质,如DVD...

    rhel5.4 centos 5.4 挂载可读写ntfs分区rpm包

    综上所述,这个RPM包是为了解决在RHEL 5.4或CentOS 5.4系统上挂载和读写NTFS分区的问题。用户需要下载这个包,然后使用RPM工具进行安装,之后便可以通过`mount`命令以读写模式挂载NTFS分区。这使得Linux系统能更好地...

    CentOS7最小化安装后搭建LAMP环境

    在CentOS 7系统上,最小化安装后,通常不会预装Apache服务器,所以需要手动安装。安装命令使用yum,它是CentOS的包管理器。 安装过程: 1. 首先更新系统的包索引并安装httpd软件包。 ``` yum install -y httpd `...

    zabbix6.4.4+grafana10.2.1一键安装脚本,适合centos 7

    总结来说,这两个脚本的目的是在CentOS 7系统上快速部署Zabbix监控系统和Grafana可视化平台,通过自动化处理大部分手动配置工作,极大地提高了部署效率。使用这些脚本时,务必确保了解每个步骤的作用,以便在出现...

    centos6.5下安装ffmpeg的详细步骤

    ### CentOS 6.5 下安装 FFMPEG 的详细步骤及注意事项 #### 一、环境准备与背景介绍 FFMPEG 是一款强大的多媒体...通过以上步骤,不仅可以成功安装 FFmpeg,还能确保 FFmpeg 在系统中正常工作,满足多媒体处理的需求。

    CentOS Apache配置详解 文字说明

    Server php php-devel php-mysql可以用rpm包安装,或者直接用yum安装#yum install httpd mysql-server php php-devel php-mysql先来了解一下apache 2.0这个版本的相关结构,这样才能知道如何处理我们的网页数据/etc/...

    php_imagick-3.4.4-7.3-nts-vc15-x64.zip

    表明这是一个PHP扩展包,用于处理图像操作,具体是PHP的Imagick扩展,版本为3.4.4,适配PHP 7.3版本,是非线程安全(NTS)版本,采用Visual C++ 15(即Visual Studio 2017)编译,且是针对64位(x64)系统的。...

    PHP安装包PHP安装包.zip

    这里,`fastcgi_pass`指定了PHP-FPM(FastCGI进程管理器)的监听地址,`fastcgi_index`是默认的PHP文件名,`SCRIPT_FILENAME`参数告诉NginxPHP脚本的位置。 对于MySQL,确保其服务已启动并设置自动启动: ```bash ...

    linux - php

    在Debian或Ubuntu系统上,你可以通过以下命令安装PHP: ```bash sudo apt-get update sudo apt-get install php ``` 在CentOS或Fedora上,使用的是`yum`(较旧版本)或`dnf`(较新版本): ```bash sudo yum ...

    PHP安装redis模块

    这里的`redis.so`是编译后生成的扩展文件名,路径可能因系统不同而异,你可能需要替换为实际路径。 5. **重启PHP服务**:保存配置文件后,重启PHP-FPM或Apache/Nginx等Web服务器,使配置生效。 6. **测试安装**:...

Global site tag (gtag.js) - Google Analytics