PHP判斷文件或者目錄是否可寫

在PHP中,可用is_writable()函數來判斷一個 文件/目錄 是否可寫,詳情以下:php

參考web

is_writable安全

(PHP 4, PHP 5)服務器

is_writable — 判斷給定的文件名是否可寫ide

說明函數

bool is_writable ( string $filename )spa

若是文件存在而且可寫則返回 TRUE。($filename 參數能夠是一個目錄名,即檢查目錄是否可寫。 )操作系統

記住 PHP 也許只能以運行 webserver 的用戶名(一般爲 ‘nobody’)來訪問文件。不計入安全模式的限制。.net

  
  
           
  
  
  1.  <?php    
  2.  
  3. $filename = 'test.txt';    
  4.  
  5. if (is_writable($filename)) {    
  6.  
  7. 4     echo 'The file is writable';    
  8.  
  9. 5 } else {    
  10.  
  11. 6     echo 'The file is not writable';    
  12.  
  13. 7 }    
  14.  
  15. 8 ?>   

Example #1 is_writable() 例子server

 

注意:is_writeable() 是 is_writable() 的別名!

 

+++++++++++++++++++++++++++++++++++++++++++++++++

 

可是,上面那個函數在PHP4中是有BUG的,尤爲是在Windows服務器下判斷不許,官方相關bug報告連接以下:

http://bugs.php.net/bug.php?id=27609

爲了兼容各個操做系統,可自定義一個判斷可寫函數,代碼以下:

 

  
  
           
  
  
  1. /**    
  2.  
  3. 02  * 判斷 文件/目錄 是否可寫(取代系統自帶的 is_writeable 函數)    
  4.  
  5. 03  *    
  6.  
  7. 04  * @param string $file 文件/目錄    
  8.  
  9. 05  * @return boolean    
  10.  
  11. 06  */   
  12.  
  13. 07 function new_is_writeable($file){    
  14.  
  15. 08     if (is_dir($file)){    
  16.  
  17. 09         $dir = $file;    
  18.  
  19. 10         if ($fp = @fopen("$dir/test.txt"'w')) {    
  20.  
  21. 11             @fclose($fp);    
  22.  
  23. 12             @unlink("$dir/test.txt");    
  24.  
  25. 13             $writeable = 1;    
  26.  
  27. 14         } else {    
  28.  
  29. 15             $writeable = 0;    
  30.  
  31. 16         }    
  32.  
  33. 17     } else {    
  34.  
  35. 18         if ($fp = @fopen($file'a+')) {    
  36.  
  37. 19             @fclose($fp);    
  38.  
  39. 20             $writeable = 1;    
  40.  
  41. 21         } else {    
  42.  
  43. 22             $writeable = 0;    
  44.  
  45. 23         }    
  46.  
  47. 24     }    
  48.  
  49. 25      
  50.  
  51. 26     return $writeable;    
  52.  
  53. 27 }   
相關文章
相關標籤/搜索