file_variation5.phpt 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. --TEST--
  2. file() with various paths
  3. --SKIPIF--
  4. <?php
  5. if (substr(PHP_OS, 0, 3) == 'WIN') {
  6. die('skip non-windows only test');
  7. }
  8. ?>
  9. --FILE--
  10. <?php
  11. $script_directory = __DIR__;
  12. chdir($script_directory);
  13. $test_dirname = basename(__FILE__, ".php") . "testdir";
  14. mkdir($test_dirname);
  15. $filepath = __FILE__ . ".tmp";
  16. $filename = basename($filepath);
  17. $fd = fopen($filepath, "w+");
  18. fwrite($fd, "Line 1\nLine 2\nLine 3");
  19. fclose($fd);
  20. echo "file() on a path containing .. and .\n";
  21. var_dump(file("./$test_dirname/../$filename"));
  22. echo "\nfile() on a path containing .. with invalid directories\n";
  23. var_dump(file("./$test_dirname/bad_dir/../../$filename"));
  24. echo "\nfile() on a linked file\n";
  25. $linkname = "somelink";
  26. var_dump(symlink($filepath, $linkname));
  27. var_dump(file($linkname));
  28. var_dump(unlink($linkname));
  29. echo "\nfile() on a relative path from a different working directory\n";
  30. chdir($test_dirname);
  31. var_dump(file("../$filename"));
  32. chdir($script_directory);
  33. chdir($script_directory);
  34. rmdir($test_dirname);
  35. unlink($filepath);
  36. ?>
  37. --EXPECT--
  38. file() on a path containing .. and .
  39. array(3) {
  40. [0]=>
  41. string(7) "Line 1
  42. "
  43. [1]=>
  44. string(7) "Line 2
  45. "
  46. [2]=>
  47. string(6) "Line 3"
  48. }
  49. file() on a path containing .. with invalid directories
  50. array(3) {
  51. [0]=>
  52. string(7) "Line 1
  53. "
  54. [1]=>
  55. string(7) "Line 2
  56. "
  57. [2]=>
  58. string(6) "Line 3"
  59. }
  60. file() on a linked file
  61. bool(true)
  62. array(3) {
  63. [0]=>
  64. string(7) "Line 1
  65. "
  66. [1]=>
  67. string(7) "Line 2
  68. "
  69. [2]=>
  70. string(6) "Line 3"
  71. }
  72. bool(true)
  73. file() on a relative path from a different working directory
  74. array(3) {
  75. [0]=>
  76. string(7) "Line 1
  77. "
  78. [1]=>
  79. string(7) "Line 2
  80. "
  81. [2]=>
  82. string(6) "Line 3"
  83. }