ホームページ  >  記事  >  バックエンド開発  >  ファイルまたはディレクトリが存在するかどうかを確認する PHP コード

ファイルまたはディレクトリが存在するかどうかを確認する PHP コード

WBOY
WBOYオリジナル
2016-07-25 09:08:041179ブラウズ
  1. $filename = '/path/to/foo.txt';
  2. if (file_exists($filename)) {
  3. echo "ファイル $filename が存在します";
  4. } else {
  5. echo "ファイル $filename が存在しません";
  6. }
  7. ?>
コードをコピー

ファイルが存在する場合、PHP ファイルの実行結果は次のように表示されます: ファイル C:blablaphphello.txt が存在します。 ファイルが存在しない場合、PHP ファイルの実行結果は次のように表示されます: ファイル C:blablaphphello.txt は存在​​しません。

file_exists 関数を使用して、ディレクトリが存在するかどうかをテストすることもできます。サンプルコード:

  1. if (file_exists("C:blablaphp"))
  2. {echo "yes";}
  3. else
  4. {echo "no";}
  5. ?>
コードをコピー

  1. /**
  2. * ファイルまたはディレクトリのパーミッションチェック関数
  3. *
  4. * @access public
  5. * @param string $file_path ファイルパス
  6. * @param bool $rename_prv 変更パーミッションチェック時にrename()関数の実行パーミッションをチェックするかどうか
  7. *
  8. * @ return int 戻り値の値の範囲は、{0 <= x <= 15} です。各値の意味は、4 つの 2 進数の組み合わせから推測できます。
  9. * 戻り値はバイナリ表記であり、上位から下位までの 4 桁はそれぞれ、
  10. * rename() 関数を実行する権限、ファイルにコンテンツを追加する権限、ファイルを書き込む権限、およびファイルを読み取る権限を表します。
  11. */
  12. function file_mode_info($file_path)
  13. {
  14. /* 存在しない場合は、読み取り不可、書き込み不可、変更不可*/
  15. if ( ! file_exists($file_path))
  16. {
  17. return false;
  18. }
  19. $mark = 0;
  20. if (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN')
  21. {
  22. /* テストファイル*/
  23. $test_file = $file_path . '/cf_test.txt';
  24. /* ディレクトリの場合*/
  25. if (is_dir($file_path))
  26. {
  27. /* ディレクトリが読み取り可能かどうかを確認します*/
  28. $dir = @opendir($ file_path);
  29. if ($dir === false)
  30. {
  31. return $mark; //ディレクトリが開けない場合は、変更、書き込み、読み取りができないディレクトリに直接戻ります
  32. }
  33. if (@readdir($dir) ! == false)
  34. {
  35. $mark ^= 1; //ディレクトリは読み取り可能 001、ディレクトリは読み取り不可 000
  36. }
  37. @closedir($dir);
  38. /* かどうかを確認ディレクトリは書き込み可能です*/
  39. $fp = @fopen ($test_file, 'wb');
  40. if ($fp === false)
  41. {
  42. return $mark //ディレクトリ内のファイルの作成に失敗した場合、書き込み不可を返します。
  43. }
  44. if (@fwrite($fp, 'ディレクトリアクセステスト。') !== false)
  45. {
  46. $mark ^= 2; //ディレクトリは書き込み可能かつ読み取り可能 011、ディレクトリは書き込み可能かつ読み取り不可 010
  47. }
  48. @fclose($fp);
  49. @unlink($test_file);
  50. /* ディレクトリが変更可能かどうかを確認します*/
  51. $fp = @fopen($test_file, 'ab+');
  52. if ($fp = == false)
  53. {
  54. return $mark;
  55. }
  56. if (@fwrite($fp, "modify test.rn") !== false)
  57. {
  58. $mark ^= 4;
  59. }
  60. @fclose($ fp);
  61. /* ディレクトリに rename() 関数を実行する権限があるかどうかを確認します*/
  62. if (@rename($test_file, $test_file) !== false)
  63. {
  64. $mark ^= 8;
  65. }
  66. @unlink($test_file );
  67. }
  68. /* ファイルの場合*/
  69. elseif (is_file($file_path))
  70. {
  71. /* 読み取りモードで開きます*/
  72. $fp = @fopen($file_path, ' rb');
  73. if ( $fp)
  74. {
  75. $mark ^= 1; //読み取り可能 001
  76. }
  77. @fclose($fp);
  78. /* ファイルを変更してみます*/
  79. $fp = @fopen( $file_path, 'ab+') ;
  80. if ($fp && @fwrite($fp, '') !== false)
  81. {
  82. $mark ^= 6 //変更、書き込み、読み取りは可能、111 は不可変更、書き込み、読み取り 011...
  83. }
  84. @fclose($fp);
  85. /* ディレクトリに rename() 関数を実行する権限があるかどうかを確認します*/
  86. if (@rename($test_file, $test_file) ! == false)
  87. {
  88. $mark ^ = 8;
  89. }
  90. }
  91. }
  92. else
  93. {
  94. if (@is_readable($file_path))
  95. {
  96. $mark ^= 1;
  97. }
  98. if (@is_writable( $file_path))
  99. {
  100. $mark ^ = 14;
  101. }
  102. }
  103. return $mark;
  104. }
  105. ?>
コードをコピー

ディレクトリが存在するかどうかを判断する PHP の例:

  1. /*--------------
  2. * XML データストリームを XML ファイルに書き込みます
  3. * @param $xmlData
  4. * @return bool|string
  5. */
  6. function writeXmlFile($xmlData)
  7. {
  8. $time = time(); //ファイルの名前に使用されるタイムスタンプを取得します
  9. $path = dirname(__FILE__) //現在の絶対パスを取得します
  10. $path = substr_replace($path, "",tripos($path, "actionsdata")); //このファイルの固有パスを空のパスに置き換えます
  11. $path .= "xmlFiles" //ストレージディレクトリ名
  12. / *ターゲット ディレクトリが存在するかどうかを確認し、存在しない場合は新しいディレクトリを作成します*/
  13. if(!is_dir($path))
  14. {
  15. mkdir($path); //新しいディレクトリを作成します
  16. }
  17. /*完全なパスを記録しますファイル名*/
  18. $filePathAndName = $path.$time.".xml";
  19. /*ファイルを開きます。ファイル名は + <.xml>*/
  20. $fp = fopen($ filePathAndName, "w") ;
  21. if(!$fp)
  22. {
  23. return false;
  24. }
  25. /*ファイルストリームに書き込む*/
  26. $flag = fwrite($fp, $xmlData);
  27. if(!$flag )
  28. {
  29. return false ;
  30. }
  31. fclose($fp);
  32. return $filePathAndName;
  33. }
  34. ?>
コードをコピー


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。