php включает китайское имя файла

<?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 — пустой файл;
Там нет никакого отношения с грушей.
Включая английское имя файла в порядке!

Спасибо!

0

Решение

Обработка имен файлов, отличных от ASCII, очень сложна в PHP, так как полностью делегирует основной файловой системе. Как именно это имя файла хранится в самой файловой системе, зависит от вашей системы и может сильно различаться в разных системах. Короткий ответ: вам нужно соответствовать кодировке базовой файловой системы. Если ваш код PHP находится в файле в кодировке UTF-8 и, следовательно, строка "test中文.php" в кодировке UTF-8, но файловая система фактически сохраняет имя файла, например, в GB18030, тогда имена файлов не совпадают. Вы должны сделать что-то вроде этого:

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

Но опять же, поскольку точное кодирование для использования может отличаться для двух систем, и / или кодирование может быть более сложным, чем простое iconv позвони, это огромная боль в шее, чтобы справиться с этим. Длинный ответ намного сложнее и обычно сводится к следующему: просто придерживайтесь имен файлов ASCII.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]