1--TEST-- 2Bug #75063 Many filesystem-related functions do not work with multibyte file names, UTF-8 3--SKIPIF-- 4<?php 5include dirname(__FILE__) . DIRECTORY_SEPARATOR . "util.inc"; 6 7skip_if_not_win(); 8if (getenv("SKIP_SLOW_TESTS")) die("skip slow test"); 9skip_if_no_required_exts(); 10 11?> 12--FILE-- 13<?php 14 15/* This file is in UTF-8. */ 16 17include dirname(__FILE__) . DIRECTORY_SEPARATOR . "util.inc"; 18 19$dir_basename = "тест"; 20$prefix = dirname(__FILE__) . DIRECTORY_SEPARATOR . "bug75063-utf8"; 21$d0 = $prefix . DIRECTORY_SEPARATOR . $dir_basename; 22 23mkdir($prefix); 24create_verify_dir($prefix, $dir_basename); 25 26var_dump(get_basename_with_cp($d0, 65001, false)); 27 28$old_cwd = getcwd(); 29var_dump(chdir($d0)); 30 31$code = <<<CODE 32<?php 33 34foreach(["test", "таст"] as \$fn) { 35 file_put_contents("\$fn.txt", ""); 36} 37 38var_dump(getcwd()); 39if (\$dh = opendir(getcwd())) { 40 while ((\$file = readdir(\$dh)) !== false) { 41 if ("." == \$file || ".." == \$file) continue; 42 var_dump(\$file); 43 } 44 closedir(\$dh); 45} 46CODE; 47$code_fn = "code.php"; 48file_put_contents($code_fn, $code); 49 50print(shell_exec(getenv('TEST_PHP_EXECUTABLE') . " -nf code.php")); 51 52chdir($old_cwd); 53 54?> 55===DONE=== 56--CLEAN-- 57<?php 58$dir_basename = "тест"; 59$prefix = dirname(__FILE__) . DIRECTORY_SEPARATOR . "bug75063-utf8"; 60$d0 = $prefix . DIRECTORY_SEPARATOR . $dir_basename; 61 62$obj = scandir($d0); 63foreach ($obj as $file) { 64 if ("." == $file || ".." == $file) continue; 65 unlink($d0 . DIRECTORY_SEPARATOR . $file); 66} 67 68rmdir($d0); 69rmdir($prefix); 70 71?> 72--EXPECTF-- 73string(8) "тест" 74bool(true) 75string(%d) "%sbug75063-utf8%eтест" 76string(8) "code.php" 77string(8) "test.txt" 78string(12) "таст.txt" 79===DONE=== 80