1--TEST-- 2Mkdir with path length < 260 and > 248 has be a long path 3--SKIPIF-- 4<?php 5include __DIR__ . DIRECTORY_SEPARATOR . "util.inc"; 6 7skip_if_not_win(); 8 9$start = realpath(__DIR__); 10if (strlen($start) > 260 || strlen($start) > 248) { 11 die("skip the starting path length is unsuitable for this test"); 12} 13 14?> 15--FILE-- 16<?php 17 18$p = ""; 19$s = str_repeat('a', 50); 20$how_many = 32; 21 22for ($i = 0; $i < $how_many; $i++) { 23 $p .= "$s\\"; 24} 25 26$start = realpath(__DIR__); 27$newstart = false; 28if (strlen($start) <= 248) { 29 // create the exact length 30 $start = $start . "\\" . str_repeat('a', 251 - strlen($start) - 1); 31 $newstart = true; 32} 33 34var_dump($start); 35$p = $start . "\\" . $p; 36 37var_dump($p); 38var_dump(mkdir($p, 0777, true)); 39var_dump(file_exists($p)); 40 41$p7 = $p . "hello.txt"; 42 43var_dump(file_put_contents($p7, "hello")); 44var_dump(file_get_contents($p7)); 45 46// cleanup 47unlink($p7); 48for ($i = 0; $i < $how_many; $i++) { 49 $p0 = substr($p, 0, strlen($p) - $i*51); 50 rmdir($p0); 51} 52if ($newstart) { 53 rmdir($start); 54} 55 56?> 57--EXPECTF-- 58string(251) "%s" 59string(1884) "%s" 60bool(true) 61bool(true) 62int(5) 63string(5) "hello" 64