<?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’) в C: \ Wnmp \ html \ linhe \ test0.php в строке 4
Трассировка стека PHP:
PHP 1. {main}() C:\Wnmp\html\linhe\test0.php:0
Процесс завершен с кодом выхода 255
вещи, которые я знаю:
test 中文 .php — пустой файл;
Там нет никакого отношения с грушей.
Включая английское имя файла в порядке!
Спасибо!
Обработка имен файлов, отличных от ASCII, очень сложна в PHP, так как полностью делегирует основной файловой системе. Как именно это имя файла хранится в самой файловой системе, зависит от вашей системы и может сильно различаться в разных системах. Короткий ответ: вам нужно соответствовать кодировке базовой файловой системы. Если ваш код PHP находится в файле в кодировке UTF-8 и, следовательно, строка "test中文.php"
в кодировке UTF-8, но файловая система фактически сохраняет имя файла, например, в GB18030, тогда имена файлов не совпадают. Вы должны сделать что-то вроде этого:
$file = 'test中文.php';
$file = iconv('UTF-8', 'GB18030', $file);
require_once $file;
Но опять же, поскольку точное кодирование для использования может отличаться для двух систем, и / или кодирование может быть более сложным, чем простое iconv
позвони, это огромная боль в шее, чтобы справиться с этим. Длинный ответ намного сложнее и обычно сводится к следующему: просто придерживайтесь имен файлов ASCII.
Других решений пока нет …