PHP 包括中文文件名


php include chinese filename

<?php
require_once 'test中文.php';

C:''Wnmp''php''php.exe C:''Wnmp''html''linhe''test0.php

PHP 警告: require_once(test中文.php): 无法打开流: C:''Wnmp''html''linhe''test0.php 第 4 行中没有这样的文件或目录

PHP 堆栈跟踪:

PHP   1. {main}() C:'Wnmp'html'linhe'test0.php:0

PHP 致命错误: require_once(): 打开失败需要"test中文.php"(include_path='。C:''Wnmp''php''pear') in C:''Wnmp''html''linhe''test0.php 在第 4 行

PHP 堆栈跟踪:

PHP   1. {main}() C:'Wnmp'html'linhe'test0.php:0

进程已完成,退出代码255

我知道的事情:test中文.php是一个空白文件;
与梨没有关系.
包括英文文件名是可以的!

谢谢!

在PHP中处理非ASCII文件名非常棘手,因为它完全委托给底层文件系统。该文件名在文件系统中的确切存储方式取决于您的系统,并且可能因不同系统而异。简短的回答是:您需要匹配底层文件系统的编码。如果您的 PHP 代码位于 UTF-8 编码文件中,因此字符串"test中文.php"是 UTF-8 编码的,但文件系统实际上存储了以 GB18030 编码的文件名,则文件名不匹配。你必须做这样的事情:

$file = 'test中文.php';
$file = iconv('UTF-8', 'GB18030', $file);
require_once $file;

但同样,由于两个系统之间要使用的确切编码可能不同和/或编码可能比简单的iconv调用更复杂,因此处理这个问题是一个巨大的痛苦。长答案要复杂得多,通常归结为:只需坚持使用ASCII文件名。