Changeset 23590
- Timestamp:
- 2014/08/14 11:37:36 (10 years ago)
- Location:
- branches/version-2_13-dev
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/version-2_13-dev/data/class/util/SC_Utils.php
r23546 r23590 1795 1795 * この関数は, パスの存在チェックを行なわないため注意すること. 1796 1796 * 1797 * @param string $realpath チェック対象のパス 1797 * use File_Util::isAbsolute 1798 * http://pear.php.net/package/File_Util/ 1799 * 1800 * @param string $path チェック対象のパス 1798 1801 * @return boolean 絶対パスの場合 true 1799 1802 */ 1800 public static function isAbsoluteRealPath($realpath) 1801 { 1802 if (strpos(PHP_OS, 'WIN') === false) { 1803 return substr($realpath, 0, 1) == '/'; 1804 } else { 1805 return preg_match('/^[a-zA-Z]:(\\\|\/)/', $realpath) ? true : false; 1806 } 1803 public static function isAbsoluteRealPath($path) 1804 { 1805 if (preg_match('/(?:\/|\\\)\.\.(?=\/|$)/', $path)) { 1806 return false; 1807 } 1808 if (!strncasecmp(PHP_OS, 'win', 3)) { 1809 return (($path{0} == '/') || preg_match('/^[a-zA-Z]:(\\\|\/)/', $path)); 1810 } 1811 return ($path{0} == '/') || ($path{0} == '~'); 1807 1812 } 1808 1813 1809 1814 /** 1810 1815 * ディレクトリを再帰的に作成する. 1811 *1812 * mkdir 関数の $recursive パラメーターを PHP4 でサポートする.1813 1816 * 1814 1817 * @param string $pathname ディレクトリのパス … … 1817 1820 * @see http://jp.php.net/mkdir 1818 1821 */ 1819 public static function recursiveMkdir($pathname, $mode = 0777) 1820 { 1821 /* 1822 * SC_Utils_Ex への再帰は無限ループやメモリリークの懸念 1823 * 自クラスへ再帰する. 1824 */ 1825 is_dir(dirname($pathname)) || SC_Utils::recursiveMkdir(dirname($pathname), $mode); 1826 1827 return is_dir($pathname) || @mkdir($pathname, $mode); 1822 public static function recursiveMkdir($path, $mode = 0777) 1823 { 1824 // Windows環境ではmodeは効かない 1825 return mkdir($path, $mode, true); 1828 1826 } 1829 1827 -
branches/version-2_13-dev/tests/class/util/SC_Utils/SC_Utils_recursiveMkDirTest.php
r23546 r23590 35 35 { 36 36 37 static $TMP_DIR;37 static $TMP_DIR; 38 38 39 protected function setUp()40 {41 self::$TMP_DIR = realpath(dirname(__FILE__)) . "/../../../tmp";42 SC_Helper_FileManager::deleteFile(self::$TMP_DIR);43 mkdir(self::$TMP_DIR, 0777, true);44 // parent::setUp();45 }39 protected function setUp() 40 { 41 self::$TMP_DIR = realpath(dirname(__FILE__)) . "/../../../tmp"; 42 SC_Helper_FileManager::deleteFile(self::$TMP_DIR); 43 mkdir(self::$TMP_DIR, 0777, true); 44 // parent::setUp(); 45 } 46 46 47 protected function tearDown()48 {49 // parent::tearDown();50 }47 protected function tearDown() 48 { 49 // parent::tearDown(); 50 } 51 51 52 /////////////////////////////////////////53 public function testRecursiveMkdir_パーミッションを指定した場合_指定のパーミッションでディレクトリが作られる()54 {55 $path = realpath(dirname(__FILE__)) . "/../../../tmp/dir1/dir2/dir3/";56 $mode = 0755;52 ///////////////////////////////////////// 53 public function testRecursiveMkdir_パーミッションを指定した場合_指定のパーミッションでディレクトリが作られる() 54 { 55 $path = realpath(dirname(__FILE__)) . "/../../../tmp/dir1/dir2/dir3/"; 56 $mode = 0755; 57 57 58 $result = SC_Utils::recursiveMkdir($path, $mode); 59 $this->expected = '0755'; 60 $this->actual = substr(sprintf('%o', fileperms($path)), -4); 58 $result = SC_Utils::recursiveMkdir($path, $mode); 59 if (DIRECTORY_SEPARATOR == '\\') { 60 // Windows環境ではパーミッションを指定したディレクトリ作成が出来ない 61 $this->expected = true; 62 $this->actual = file_exists($path); 63 $this->verify('作成したディレクトリがあるかどうか'); 64 } else { 65 $this->expected = '0755'; 66 $this->actual = substr(sprintf('%o', fileperms($path)), -4); 67 $this->verify('作成したディレクトリのパーミッション'); 68 } 61 69 62 $this->verify('作成したディレクトリのパーミッション'); 63 } 70 } 64 71 65 public function testRecursiveMkdir_パーミッションを指定しない場合_0777でディレクトリが作られる()66 {67 $path = realpath(dirname(__FILE__)) . "/../../../tmp/dir1/dir2/dir3/";72 public function testRecursiveMkdir_パーミッションを指定しない場合_0777でディレクトリが作られる() 73 { 74 $path = realpath(dirname(__FILE__)) . "/../../../tmp/dir1/dir2/dir3/"; 68 75 69 $result = SC_Utils::recursiveMkdir($path); 70 $this->expected = '0777'; 71 $this->actual = substr(sprintf('%o', fileperms($path)), -4); 76 $result = SC_Utils::recursiveMkdir($path); 77 if (DIRECTORY_SEPARATOR == '\\') { 78 // Windows環境ではパーミッションを指定したディレクトリ作成が出来ない 79 $this->expected = true; 80 $this->actual = file_exists($path); 81 $this->verify('作成したディレクトリがあるかどうか'); 82 } else { 83 $this->expected = '0777'; 84 $this->actual = substr(sprintf('%o', fileperms($path)), -4); 85 $this->verify('作成したディレクトリのパーミッション'); 86 } 72 87 73 $this->verify('作成したディレクトリのパーミッション'); 74 } 88 } 75 89 76 //////////////////////////////////////////90 ////////////////////////////////////////// 77 91 } 78 92
Note: See TracChangeset
for help on using the changeset viewer.