検索
ホームページphp教程php手册PHP チュートリアル: PHP でのディレクトリ操作とファイル操作

1. はじめに

Web プログラミングでは、ファイル操作は常に頭の痛い問題ですが、CMS システムではファイル ディレクトリの生成などの操作が非常に便利です。ここでは、PHP のこれらの関数の詳細な概要を作成し、その使用方法を例を示して説明します。対応する関数の詳細については、PHP マニュアルを参照してください。重要な点と注意が必要な点 (PHP マニュアルには記載されていません)

2. ディレクトリ操作

最初の導入は、ディレクトリから読み取る関数、opendir()、readdir()、closedir() です。使用すると、最初にファイル ハンドルが開かれ、次に反復的にリストされます。

$base_dir = "filelist/";
$fso = opendir($base_dir);
echo $base_dir."
" ;
while($flist=readdir($fso)){
echo $flist."
" ;
}
closedir($fso)
?>
これは、ファイルディレクトリ配下のファイルとディレクトリを返すプログラムです(ファイルが0の場合はfalseを返します)。

ディレクトリ情報が必要な場合は、dirname($path) とbasename($path) を使用して、それぞれパスのディレクトリ部分とファイル名部分を返すことができます。空き容量。

コマンドの作成:

mkdir($path,0777)
、0777 は許可コードであり、非ウィンドウ条件下で umask() 関数を使用して設定できます

rmdir($path)
$path にパスがあるファイルが削除されます。

dir -- directory クラスも、ファイル ディレクトリを操作するための重要なクラスです。これには、read、rewind、close という 3 つのメソッドがあり、最初にオープン ファイル ハンドルを使用し、次に使用します。ポインタをお読みください。ここで PHP マニュアルを参照してください:

$d = dir("/etc/php5");
echo "Handle: " . $d->handle . "n";
echo "Path: " . $d->path . "n";
while (false !== ($entry = $d->read())) {
    echo $entry."n";
}
$d->close();
?>
出力:

テーブル>

ファイル属性には、作成時刻、最終変更時刻、所有者、ファイル グループ、タイプ、サイズなどが含まれます。

ファイル操作に焦点を当てましょう。

3. ファイル操作

A. ファイルを読み取る

まず、ファイルが読み取れるかどうか (権限の問題)、または is_readable 関数を使用して情報を取得できるかどうかを確認します。

ハンドル: リソース ID #2
パス: /etc/php5
.
..
apache
cgi
cli

Handle: Resource id #2
Path: /etc/php5
.
..
apache
cgi
cli

$file = 'dirlist.php';
if (is_readable($file) == false) {
         die('文件不存在或者无法读取');
} else {
         echo '存在';
}
?>

ファイルの存在を確認する関数には file_exists も含まれています (以下に示します) が、これは明らかに is_readable ほど包括的ではありません。ファイルが存在する場合は、

を使用できます。

テーブル>

ただし、file_get_contents 関数は、以前のバージョンではサポートされていません。最初にファイルへのハンドルを作成し、次にポインターを使用してすべてを読み取ることができます。

$file = "filelist.php";
if (file_exists($file) == false) {
         die('文件不存在');
}
$data = file_get_contents($file);
echo htmlentities($data);
?>

$file = "filelist.php";
if (file_exists($file) == false) {
die('ファイルが存在しません'); }
$data = file_get_contents($file);
echo htmlentities($data);
?>
$fso = fopen($cacheFile, 'r');
$data = fread($fso, filesize($cacheFile));
fclose($fso);

バイナリ ファイルを読み取る別の方法もあります:

$data = implode('', file($file));

B. ファイルを書き込む

ファイルの読み取りと同じように、最初に書き込み可能かどうかを確認します:

テーブル>

書き込みできる場合は、file_put_contents 関数を使用して次のように書き込むことができます。

$file = 'dirlist.php';
if (is_writable($file) == false) {
         die("我是鸡毛,我不能");
}
?>

$file = 'dirlist.php';
if (is_writable($file) == false) {
die("私は鶏の羽です、私はできません" );
}
?>
$file = 'dirlist.php';
if (is_writable($file) == false) {
die('我是鸡毛,我不能');
}
$data = '我是可鄙,我想要';
file_put_contents ($file, $data);
?>

file_put_contents 関数は php5 で新しく導入された関数です (存在しない場合は、function_exists 関数を使用して最初に確認してください)。以下の方法を使用できます。

$f = fopen($file, 'w');
fwrite($f, $data);
fclose($f);

交換してください。

ファイルを書き込むときに、ファイルをロックしてから次のように書き込む必要がある場合があります。

function cache_page($pageurl,$pagedata){
if(!$fso=fopen($pageurl,'w')){
$this->warns('无法打开缓存文件.');//trigger_error
return false;
}
if(!flock($fso,LOCK_EX)){//LOCK_NB,排它型锁定
$this->warns('无法锁定缓存文件.');//trigger_error
return false;
}
if(!fwrite($fso,$pagedata)){//写入字节流,serialize写入其他格式
$this->warns('无法写入缓存文件.');//trigger_error
return false;
}
flock($fso,LOCK_UN);//释放锁定
fclose($fso);
return true;
}

C. ファイルのコピーと削除

PHP でのファイルの削除は、unlink 関数を使用するだけで非常に簡単です。

$file = 'dirlist.php';
$result = @unlink ($file);
if ($result == false) {
echo '蚊子赶走了';
} else {
echo '无法赶走';
}
?>

以上です。

ファイルのコピーも簡単です:

テーブル>

rename() 関数を使用してフォルダーの名前を変更できます。これらの関数を組み合わせて他の操作も実現できます。

D. ファイル属性を取得する

いくつかの一般的な関数について説明します:

最新の変更時刻を取得します:

$file = 'yang.txt';
$newfile = 'ji.txt'; # 这个文件父文件夹必须能写
if (file_exists($file) == false) {
die ('小样没上线,无法复制');
}
$result = copy($file, $newfile);
if ($result == false) {
echo '复制记忆ok';
}
?>

$file = 'yang.txt';
$newfile = 'ji.txt'; # このファイルの親フォルダーは書き込み可能でなければなりません
if (file_exists ( $file) == false) {
die ('デモはオンラインではないためコピーできません')
}
$result = copy($file, $newfile); br/>if ($result == false) {
echo 'コピーメモリOK'
}
?>
テーブル>

返されるタイムスタンプは、キャッシュ テクノロジで一般的に使用される UNIX タイムスタンプです。

最終アクセス時刻を取得するために fileatime() と filectime() が使用される時間も関連しています

$file = 'test.txt';
echo date('r', filemtime($file));
?>

$file = 'test.txt';
echo date('r', filemtime($file));

$owner = posix_getpwuid(fileowner($file));

テーブル>

(非ウィンドウ システム)、ileperms() はファイルのアクセス許可を取得します、

$owner = posix_getpwuid(fileowner($file));

$file = 'dirlist.php';
$perms = substr(sprintf('%o', fileperms($file)), -4);
echo $perms;
?>

テーブル>

$file = 'dirlist.php';
$perms = substr(sprintf('%o', fileperms($file)), -4);
echo $perms;
?>

// 输出类似:somefile.txt: 1024 bytes

$filename = 'somefile.txt';
echo $filename . ': ' . filesize($filename) . ' bytes';

?>

filesize() はファイル サイズをバイト単位で返します:

テーブル> ファイルのすべての情報を取得するには、配列を返す stat() 関数があります。

ここでは展開されませんが、キーが何に対応しているかについての詳細情報を確認できます。

4.結論

上記のいくつかのファイル操作を簡単にまとめました。上記の機能に習熟していれば、操作に大きな問題はありません。PHP のファイル操作の機能は、比較的すぐに変化し、非常に強力になります。ファイルも PHP を学習する上で非常に重要な部分です。無視しないでください。



$file = 'dirlist.php';
$perms = stat($file);
var_dump($perms);
?>
// 出力は同様です: somefile.txt: 1024 バイト $filename = 'somefile.txt';
echo $filename . ' . filesize($filename) '; ?>
声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。