<?php
require_once 'test中文.php';
C:\ Wnmp \ php \ php.exe C:\ Wnmp \ html \ linhe \ test0.php
PHP警告:require_once(test中文.php):无法打开流:第4行的C:\ Wnmp \ html \ linhe \ test0.php中没有此类文件或目录
PHP堆栈跟踪:
PHP 1. {main}() C:\Wnmp\html\linhe\test0.php:0
PHP致命错误:require_once():无法在C:\ Wnmp \ html \ linhe \ test0.php中打开所需的'test中文.php'(include_path ='。; C:\ Wnmp \ php \ pear')第4行
PHP堆栈跟踪:
PHP 1. {main}() C:\Wnmp\html\linhe\test0.php:0
流程已完成退出代码255
我知道的事情:
test中文.php是一个空白文件;
与梨无关
包括英文文件名就可以了!
谢谢!
答案 0 :(得分:1)
在PHP中处理非ASCII文件名非常棘手,因为它完全委托给底层文件系统。文件系统本身存储文件的确切程度取决于您的系统,并且可能在不同系统之间存在很大差异。简短的回答是:您需要匹配底层文件系统的编码。如果您的PHP代码是UTF-8编码文件,因此字符串"test中文.php"
是UTF-8编码的,但文件系统实际上存储了编码的文件名,比如GB18030,那么文件名就不会匹配。你必须做这样的事情:
$file = 'test中文.php';
$file = iconv('UTF-8', 'GB18030', $file);
require_once $file;
但同样,由于使用的确切编码可能在两个系统之间有所不同和/或编码可能比简单的iconv
调用更复杂,因此处理此问题是一个巨大的痛苦。长答案要复杂得多,通常归结为:坚持使用ASCII文件名。