亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

基本的な PHP 開発チュートリアル: PHP ファイルの操作

1. ファイルシステム

1. マウスを右クリックしてファイルを削除し、Ctrl+C (または右クリック) してファイルをコピーして貼り付け、新しいファイルを作成してファイルが正しいかどうかを確認(rèn)します。読み取り専用ファイル。

2. コンピューターで実行されるこれらの操作をコードで実行できれば素晴らしいでしょう。

3. これらの操作があれば。さまざまなことができます:

  • 設(shè)定ファイルを書いたり変更したりできますか?

  • PHP のインストール中にファイルのアクセス許可を検出することは可能ですか? HTML ファイルやその他のさまざまな操作を生成することは可能ですか?

  • .... 他にも使用できる場(chǎng)所が多すぎます。

  • 4. ファイル処理の學(xué)習(xí)は、基本的にファイル処理関數(shù)の學(xué)習(xí)です。以前に作成したコードと組み合わせて、ビジネス処理能力を向上させます。

2. ファイルを読み取ります

1. readfile ファイルを読み取ります

では、ファイルを読み取るにはどうすればよいでしょうか?まずは関數(shù)を?qū)W習(xí)しましょう。

int readfile (string $filename)

関數(shù): ファイルパスを渡してファイルを出力します。

以下のコードでは、ファイル名または指定されたファイルパスが渡される限り、ファイルが読み取られます。

<?php
    //linux類的讀了方式
    readfile("/home/paul/test.txt");
    //windows類的讀取方式
    readfile("c:\boot.ini");
?>

注: 上記のコードの Windows スラッシュはスラッシュであり、一部の文字はエスケープされる場(chǎng)合があります。したがって、書くときはスラッシュを 2 つ書きます。

2. file_get_contentsでファイルを開きます

上記は単純にファイルを開いた後の直接出力ですが、ファイルを開いた後に変數(shù)に代入できる操作方法はありますか? PHP は確かにこのメソッドを提供します。このメソッドは、PHP がファイルを開いてコンテンツを返す方法の 1 つです。関數(shù)を見(jiàn)てみましょう:

string file_get_contents ( string filename)

関數(shù): ファイルまたはファイル パスを渡し、開きます。ファイルを取得し、ファイルの內(nèi)容を返します。ファイルの內(nèi)容は文字列です。

<?php
    $filename = 'NoAlike.txt';
    $filestring = file_get_contents($filename);
    echo $filestring;
?>

上記のコードは、ファイルを開き、ファイルの內(nèi)容を出力します。 これまでの知識(shí)に基づいてコードを拡張してみましょう。これまでの知識(shí)を活用してください。

<?php
    //假設(shè)我們有一個(gè)多行的文件叫NoAlike.txt,沒(méi)有的話你可以新建一個(gè)這個(gè)文件
     $filename = 'NoAlike.txt';
    //打開這個(gè)文件,將文件內(nèi)容賦值給$filestring
    $filestring = file_get_contents($filename);
    //因?yàn)槊恳恍杏幸粋€(gè)回車即\n,我用\n來(lái)把這個(gè)字符串切割成數(shù)組
    $filearray = explode("\n", $filestring);
    //把切割成的數(shù)組,下標(biāo)賦值給$key,值賦值給$val,每次循環(huán)將$key加1。
    while (list($key, $val) = each($filearray)) {
        ++$key;
        $val = trim($val);
        //用的單引號(hào),單引號(hào)不解釋變量進(jìn)行了拼接而已
        print 'Line' . $key .':'.  $val.'<br />';
    }
?>

上記では、これまでに學(xué)んだ知識(shí)を組み合わせました。

3. fopen、fread、および fclose 操作はファイルを読み取ります

ファイルを開く上記の file_get_contents メソッドは単純かつ粗雑です。以下の

resource fopen ( string $ ファイル名、文字列モード)

  • string fread ( resource $ 操作リソース、int 読み取り長(zhǎng))

  • bool fclose ( resource $ 操作リソース)

  • Through上記の機(jī)能に加えて、リソースタイプの通常の操作方法を説明します:

リソースを開く

  • 関連する関數(shù)を使用して操作する

  • リソースを閉じる

fopen 関數(shù) fopen 関數(shù)の機(jī)能はファイルを開くことです:

l ファイルを開くためのパス

l ファイルを開くためのモード

戻り値の型は a です。初めて遭遇したリソースタイプ 基本タイプについて説明したときに前述したリソースタイプ。
このリソースタイプでは、このリソースを操作するために他の関數(shù)が必要です。すべてのリソースは、開いたときに閉じる必要があります。

fread関數(shù) この関數(shù)の機(jī)能は、開いているファイルリソースを読み取ることです。指定された長(zhǎng)さのファイル リソースを読み取り、その一部を読み取り、一部を後方に移動(dòng)します。ファイルの最後まで。

fclose関數(shù) fclose関數(shù)の機(jī)能はリソースを閉じることです。リソースは開いたり閉じたりします。

関數(shù)を理解すると、最後の 2 つの関數(shù)は比較的簡(jiǎn)単です。 fopen 関數(shù)のモードは何ですか? fopen のモードは次のとおりです。


38.png


次のレッスンでは、r モードのみを?qū)W習(xí)します。書くときに他のいくつかのモードについて話しましょう。


3. まずファイルの読み取り方法を知る必要があります。その後、ファイルの書き込みをマスターできるようになります。

1.ファイルを開く

<?php
    //你可以創(chuàng)建一個(gè)NoAlike.txt,以只讀模式打開
    $fp = fopen('NoAlike.txt', "r");
 
 
    //var_dump()操作一下$fp看看效果,輸出的是不是只有類型提示的是resource
    var_dump($fp);
?>

2.ファイルを読む

<?php
    $fp = fopen('NoAlike.txt', "r");
 
    //打開一個(gè)文件類型后,讀取長(zhǎng)度
    $contents = fread($fp, 1024);
?>

3.ファイルを閉じる

<?php
    $fp = fopen($filename, 'r');
    $contents = fread($fp, 1024);
    fclose($fp);
    echo $contents;
?>

その他のメモ:

39.png


使用例:

<?php
$fp = fopen($filename, 'ab');
$contents = fwrite($fp, '可愛(ài)的很\n喲');
fclose($fp);
echo $contents;
?>

注:
この実験では、実験の効果を肉眼で確認(rèn)することはできません。この機(jī)能だけは覚えておいてください。

Windows には、n を rn に透過(guò)的に変換するためのテキスト変換タグ ('t') が用意されています。
同様に、「b」を使用してバイナリモードを強(qiáng)制し、データが変換されないようにすることもできます。これらのフラグを使用するには、モード引數(shù)の最後の文字として「b」または「t」を使用します。


4. ファイルの內(nèi)容を作成および変更します

1.file_put_contentsファイルを書き込みます

まず、ファイルを書き込む最初の方法を?qū)Wびましょう:

int file_put_contents (string $file path, string $Write data] )

機(jī)能: 指定されたファイルに文字列を書き込み、ファイルが存在しない場(chǎng)合はファイルを作成します。返されるのは書き込まれたバイト長(zhǎng)です

<?php
    $data = "我是一個(gè)兵,來(lái)自老百姓";
 
    $numbytes = file_put_contents('binggege.txt', $data);
 
    if($numbytes){
 
        echo '寫入成功,我們讀取看看結(jié)果試試:';
 
        echo file_get_contents('binggege.txt');
 
    }else{
        echo '寫入失敗或者沒(méi)有權(quán)限,注意檢查';
    }
?>

ファイルの書き込みは非常に簡(jiǎn)単であることがわかりました。この関數(shù)の形式に従い、ファイルを指定して文字列データを書き込みます。

2.fwrite は fopen と連攜して書き込み操作を?qū)g行します

int fwrite (resource $file resource variable, string $writing string [, int length])

注: fwrite のエイリアス関數(shù)は fputs です

最後のクラスでは、読み取り時(shí)にのみ使用される r モードを試しました。次に、fopen で fwrite と w を使用して、書き込みモードでファイルを書き込みました。

機(jī)能を見(jiàn)てみましょう:

書き込みモードで開き、ファイルポインタをファイルヘッダーにポイントし、ファイルサイズをゼロに切り詰めます。ファイルが存在しない場(chǎng)合は、ファイルの作成が試行されます。

注: 次の実験では、新しい test.txt ファイルを作成し、そこにコンテンツを書き込むことができます。次に、test.txt を削除してみてください。どのようなヒントがあるのか??見(jiàn)てみましょう。

<?php
    $filename = 'test.txt';
    $fp= fopen($filename, "w");
    $len = fwrite($fp, '我是一只來(lái)自南方的狼,一直在尋找心中的花姑娘');
    fclose($fp);
    print $len .'字節(jié)被寫入了\n";
?>

概要:
1. ファイルが新しいかどうかに関係なく開かれ、書き換えられます
2. 元のファイルの內(nèi)容が上書きされます
3. ファイルが存在しない場(chǎng)合は、ファイルが作成されます

以下を比較してみましょう 2 つのモードの違い:

40.png

実験を通して証明してみましょう:

<?php
    $filename = 'test.txt';
    $fp= fopen($filename, "r+");
    $len = fwrite($fp, '我是一只來(lái)自南方的狼,一直在尋找心中的花姑娘');
    fclose($fp);
    print $len .'字節(jié)被寫入了\n';
?>

実験中は、r の後の + 記號(hào)を削除できます。

実際に、r モードを使用すると、r のみを使用すると、ファイルの保存時(shí)にデータを書き込むことができることがわかりました。

3. a モードと w モードの違い

以下の同じコードを a モードに変更しました。

<?php
    $filename = 'test.txt';
    $fp= fopen($filename, "a");
    $len = fwrite($fp,'讀大學(xué)迷茫了,PHP學(xué)院PHP給你希望');
    echo  $len .'字節(jié)被寫入了\n';
?>

Web ページを開いてこのコードを?qū)g行すると、次のことがわかります: 更新するたびに、ファイルに余分な段落が追加されます
大學(xué)で迷っているなら、PHP アカデミー PHP が希望を與えてくれます。

概要:

41.png

4.x モードと w モードの違い

このコードをもう一度試して、x モードに変更しましょう:

<?php
    $filename = 'test.txt';
    $fp= fopen($filename, "x");
    $len = fwrite($fp,'讀大學(xué)迷茫了,PHP學(xué)院PHP給你希望');
    echo  $len .'字節(jié)被寫入了\n';
?>

次のことがわかります:

ファイルは存在します時(shí)々エラーが報(bào)告されることがあります

$filenameを別のファイル名に変更すれば大丈夫です。しかし、再度更新すると、エラーが報(bào)告されました。

x+ は拡張された x モードです。読書時(shí)にも使えます。




5.一時(shí)ファイルを作成します

前に作成したファイルは永続ファイルです。

一時(shí)ファイルの作成は、日々のプロジェクト開発にも非常に役立ちます。一時(shí)ファイルを作成することのいくつかの利點(diǎn):

1. 書き込みが完了したら削除します

2. このファイルの削除ステータスを維持する必要はありません

例: ファイル A の內(nèi)容を転送する必要があります。 B に、B のファイルの內(nèi)容を C に転送します。

現(xiàn)実世界と同じように、まず一時(shí)的なボトルを使用して B の水を満たし、次に A のデータを B に書き込むことができます。仮ボトルの水をCに加えます。

この関數(shù)を?qū)W習(xí)しましょう:

resource tmpfile ( )

関數(shù): 一時(shí)ファイルを作成し、リソースの種類を返します。ファイルを閉じると削除されます。

りー



6. ファイルの移動(dòng)、コピー、削除

1. 名前の変更

bool rename($old name,$new name);

この関數(shù)は bool 値を返し、古い名前を置き換えます新しい名前に変更します。

<?php
    //創(chuàng)建了一個(gè)臨時(shí)文件
    $handle = tmpfile();
 
    //向里面寫入了數(shù)據(jù)
    $numbytes = fwrite($handle, '寫入臨時(shí)文件');
 
    //關(guān)閉臨時(shí)文件,文件即被刪除
    fclose($handle);
 
    echo  '向臨時(shí)文件中寫入了'.$numbytes . '個(gè)字節(jié)';
?>

ディレクトリを開くと、指定したファイルがターゲット パスにコピーされていることがわかります。

2. ファイルのコピー

ファイルのコピーは、元のものを新しいものに複製するクローン技術(shù)と同等です。二人は全く同じに見(jiàn)えます。

bool copy (source file, target file)

機(jī)能: 指定されたパスを持つソースファイルをターゲットファイルの場(chǎng)所にコピーします。

実験とコードを通して遊んでみましょう:

<?php
    //舊文件名
    $filename = 'test.txt';
 
    //新文件名
    $filename2 = $filename . '.old';
 
    //復(fù)制文件
    rename($filename, $filename2);
?>

概要:
上記の例を見(jiàn)ると、余分なファイルがあることがわかります。

3. ファイルの削除

ファイルの削除とは、指定したパスにあるファイルを削除することですが、この削除は直接削除です。 Windows コンピュータを使用している場(chǎng)合、このファイルはごみ箱にありません。

このファイルが消えていることがわかるだけです。

bool unlink (指定されたパスを持つファイル)

<?php
    //舊文件名
    $filename = 'copy.txt';
 
    //新文件名
    $filename2 = $filename . '_new';
 
    //修改名字。
    copy($filename, $filename2);
?>

7. ファイル屬性検出機(jī)能

一部の學(xué)生は、ファイル屬性検出をどこで使用するかについて特に興味を持っています。ファイル屬性の検出は、非常に多くの場(chǎng)所で使用できます。

例を挙げてみましょう:

1. ソフトウェアをインストールすると、ファイルが存在する場(chǎng)合は別の場(chǎng)所にジャンプすることがわかります。

2. インストールプロセス中に一部のファイルに書き込み権限がない場(chǎng)合、インストールは許可されません。

非常に有名な國(guó)産ソフトウェア discuz を取り上げ、インストール プロセスのスクリーンショットをお見(jiàn)せしましょう:

42.png

上の例は、ファイル検出の典型的な使用例です。

次の一連の関數(shù)を?qū)W習(xí)しましょう。それでは、例を通して學(xué)びましょう。

bool file_exists ($指定ファイル名またはファイルパス)
関數(shù): ファイルが存在するかどうか。

bool is_readable ($はファイル名またはファイルパスを指定します)
関數(shù): ファイルが読み取り可能かどうか

bool is_writeable ($はファイル名またはファイルパスを指定します)
関數(shù): ファイルが書き込み可能かどうか

bool is_executable ($ファイル名またはファイルパスを指定)
関數(shù): ファイルが実行可能かどうか

bool is_file ($指定ファイル名またはファイルパス)
関數(shù): ファイルであるかどうか

bool is_dir ($ファイル名またはファイルパスを指定)
機(jī)能: ディレクトリかどうか

void clearstatcache (void)
機(jī)能: ファイルのステータスキャッシュをクリア

上記の機(jī)能は一目瞭然です。実験としては、冒頭に挙げた例を書いてみましょう。

最初の例であるファイルロックについて話しましょう。インストールされている場(chǎng)合、インストール ロックが存在する場(chǎng)合は、インストールされたことを示すメッセージが表示されます。そうでない場(chǎng)合は、インストールが続行されます。

インストールインターフェースの URL は install.php、インストールされるロックファイルは install.lock であると仮定します。 install.lock ファイルが存在するかどうかを検出できます。

<?php
    $filename = 'test.txt';
 
    if (unlink($filename)) {
        echo  "刪除文件成功 $filename!\n";
    } else {
        echo "刪除 $filename 失敗!\n";
    }
?>

ファイルのインストール検出実験を行って、ファイルまたはディレクトリに書き込み権限または読み取り権限があるかどうかを確認(rèn)してみましょう。そうでない場(chǎng)合、インストールは実行できません。

この問(wèn)題を処理するアイデアは次のとおりです:

1. アクセス許可を検出する必要がある配列のバッチを定義します

2. フォルダーかファイルかを検出できます

3. set variable. set 変數(shù)が一度 false の場(chǎng)合、インストールの次のステップは表示されません

<?php
if(file_exists('install.lock')){
    echo '已安裝,請(qǐng)不要再次進(jìn)行安裝';
    exit;
}
?>

上記の例を通して、これを?qū)g行しました。特定の PHP ソフトウェアのインストール プロセス中にインストール検出を?qū)g裝します。

これは私たちの上記のアイデアの実現(xiàn)です。


8. ファイルの共通関數(shù)と定數(shù)

1. ファイル操作用の定數(shù)

以下の定數(shù)が最も一般的に使用されます。ファイルディレクトリの區(qū)切り文字である定數(shù)です。

形式を見(jiàn)てみましょう:

43.png

Windowsのパス形式は d:xxxxxx 注: Windows は d:/xxx/xxx をサポートします
Linux のパス形式は /home/xxx/xxx 注: homexxxxxxはlinuxです 違います
なのでエスケープを有効にするなどしてエスケープ文字を併用するとd:xxxxxxと同じになってしまいます。判斷する場(chǎng)合、2 つある場(chǎng)合は 1 つに変換し、/ を置き換えてパスを分割すると、Linux または Windows 上のパスが統(tǒng)一されたままになります。

定數(shù)を使用します:
DIRECTORY_SEPARATOR

現(xiàn)在のファイルのパスを定義する小さな例を書いてみましょう:

FILE は PHP の事前定義された定數(shù)であるため、必要に応じて FILE を変更する方法はありません。また、オペレーティング システムに自動(dòng)的に適応します。
その場(chǎng)合は、FILE を使用せず、カスタム定數(shù)を使用して、次のように FILE を処理できます:

<?php
 
//可以定義一批文件是否存在
$files = [
    'config.php',
    'img/',
    'uploads/',
];
 
//定義標(biāo)志位變量
$flag = true;
foreach($files as  $v){
    echo $v;
 
    //判斷是文件還是文件夾
 
    if(is_file($v)){
        echo '是一個(gè)文件    ';
    }else if(is_dir($v)){
        echo '是一個(gè)文件夾    ';
    }
 
    if(is_readable($v)){
        echo ' 可讀';
    }else{
         echo '<font color="red">不可讀</font>';
    }
 
    if(is_writeable($v)){
        echo '可寫';
    }else{
        echo '<font color="red">不可寫</font>';
    }
 
    echo '<br />';
}
 
if($flag){
    echo '<a href="step1">下一步</a>';
 
}else{
     echo '不能進(jìn)行安裝';
}
?>

2. ファイルポインタ操作関數(shù)

rewind (リソースハンドル)

関數(shù): ポインタリターンの始まり

fseek (リソースハンドル, int offset [, int from_where])
関數(shù): ファイルポインタを指定された文字だけ後方に移動(dòng)します

前回の読み込みでは、fread が指定された長(zhǎng)さのデータを読み込むことが分かりました。指定した長(zhǎng)さの內(nèi)容を次回読むときは元の位置から読み戻します。

44.png

上の図に示すように、次のことが想像できます:

1. ファイルが最初に開かれると、赤いアイコンが読み込まれます

2. ファイルは疑似カラーで A から C まで読み込まれます

3。デモでは、次のファイルのバッチを書き込みます:

  • Abcdeefghijklk

  • Uvwxyz

実験を始めましょう。

<?php
$_current_file = str_replace(array('/', '\'), DIRECTORY_SEPARATOR, __FILE__);
define('__CUR_FILE__', $_current_file);
echo __CUR_FILE__;
?>

上記の例では、fseek は指定された長(zhǎng)さだけバイトを移動(dòng)することがわかります。そして巻き戻しは毎回ファイルの先頭に戻ります。

それではどうやって最後まで進(jìn)むか?バイト數(shù)を數(shù)えることができます。 fseek 中に直接後ろに移動(dòng)します。

次に、ファイルサイズ統(tǒng)計(jì)バイトについて話しましょう。

3.filesizeはファイルのサイズを検出します

<?php
$fp = fopen('output.txt', 'r+');
//讀取10個(gè)字符
echo fread($fp,10);
 
//指針設(shè)置回到開始處
rewind($handle);
//再讀取10次看看輸出的是什么
echo fread($fp,10);
 
//文件指針向后移動(dòng)10個(gè)字符
echo fseek($fp,10);
 
//再看看文件中輸出的是什么
echo fread($fp,10);
 
fclose($handle);
?>

4.ファイルを操作するためのその他の関數(shù)

実際には、ファイルを操作したり、ファイルを読み込んだりするための関數(shù)が他にもいくつかあります

45.png

説明例 上記の関數(shù)はすべて使用されます。

demo.txt ファイルにファイルのバッチを書き込みます:

abcdeefghijklk

opqrstuvwxyz
12345678

<?php
$filename = 'demo.txt';
echo $filename . '文件大小為: ' . filesize($filename) . ' bytes';
?>
fgets は一度に 1 行ずつ開きます:

<?php
//以增加的r模式打開
$fp = fopen('demo.txt','r+');
//你分發(fā)現(xiàn)每次只讀一個(gè)字符
echo  fgetc($fp);
 
//我要全部讀取可以,讀取一次將結(jié)果賦值一次給$string
while($string = fgetc($fp)){
    echo $string;
}
?>

上記のコードでは、すべてのことがわかります。一度に 1 行ずつ開きます。最終的な読み取りの戻り値は false です。

次にファイルインターセプト関數(shù)を見(jiàn)てみましょう:

<?php
//以增加的r模式打開
$fp = fopen('demo.txt','r+');
//你分發(fā)現(xiàn)每次只讀一個(gè)字符
echo  fgets($fp);
echo  fgets($fp);
echo  fgets($fp);
echo  fgets($fp);
?>

上の例では、コンテンツがインターセプトされている限り表示できることがわかりました。

5. ファイルの時(shí)間関數(shù)

<?php
//打開我們上面的demo.txt文件
$file = fopen("demo.txt", "a+");
//你可以數(shù)數(shù)20個(gè)字有多長(zhǎng),看看是不是達(dá)到效果了
echo ftruncate($file,20);
fclose($file);
?>
46.png



ファイルロックメカニズムは、通常、開くときにまったく効果がありません。単一のファイル。 。學(xué)習(xí)のこの部分は少し抽象的です。 それを達(dá)成する方法を考えてみませんか? 効果が見(jiàn)えないのはなぜですか?

回答: コンピューターは基本的にミリ秒レベルで非常に高速に動(dòng)作するためです。したがって、この実験は実際には何の効果もありません。

この章では、ファイル ロックの基本概念を理解し、ファイル ロック機(jī)能とロック メカニズムについて理解します。

ファイルロックの使用:


ある人がファイルを書き込んでいる場(chǎng)合、別の人もファイルを開いてファイルを書き込みます。

この場(chǎng)合、一定の確率で衝突が発生した場(chǎng)合、どちらの操作が優(yōu)先されるかはわかりません。

そこで今回はロック機(jī)構(gòu)を?qū)毪筏蓼埂?

ユーザー A がこのファイルの書き込みまたは読み取りを行う場(chǎng)合、ファイルを共有に追加します。私はそれを読むことができます、そして他の人も読むことができます。

でも、これをやると。排他ロックを使用します。このファイルは私のものです、私がファイルのロックを解除するまでは觸らないでください。


注: ファイルを追加した後は、ファイルのロックを解除するように注意してください。


この関數(shù)を見(jiàn)てみましょう:

bool flock ( resource $handle , int $operation)

関數(shù): ライトアドバイザリーファイルロック

ロックタイプを見(jiàn)てみましょう:

次に、demo.txtに排他ロックを追加し、書き込み操作を?qū)g行します。

rree

説明:

上記の例では、ファイルに書き込むために、ファイルに排他ロックを追加しました。

操作を完了すると、書き込み完了後に排他ロックが解除されます。

ファイルを読んでいる場(chǎng)合は、同じ処理の考え方に従って共有ロックを追加できます。


10. ディレクトリ処理関數(shù)

以前はファイルだけを処理していましたが、ディレクトリとフォルダーをどのように扱うか

ディレクトリまたはフォルダーの処理に関連する関數(shù)を?qū)Wびましょう。

フォルダー処理の基本的な考え方は次のとおりです:

特定のパスを読み取るときに、それがフォルダーであるかどうかを判斷します

フォルダーの場(chǎng)合は、指定されたフォルダーを開いて、ファイルディレクトリのリソース変數(shù)を返します

readdirを使用してディレクトリを1回読み取ります 中のファイルについては、ディレクトリポインタが1回後方に移動(dòng)します

readdirを使用して最後まで読み取り、読み取り可能なファイルがない場(chǎng)合はfalseを返します

ファイルディレクトリを閉じます

比較を?qū)Wびましょう共通関數(shù):

48.png

<?php
$filename = 'demo.txt';
if (file_exists($filename)) {
    echo "$filename文件的上次訪問(wèn)時(shí)間是: " . date("Y-m-d H:i:s", fileatime($filename));
    echo "$filename文件的創(chuàng)建時(shí)間是: " . date("Y-m-d H:i:s", filectime($filename));
     echo "$filename文件的修改時(shí)間是: " . date("Y-m-d H:i:s", filemtime($filename));
}
?>

一度読んで一度戻るので、

<?php
$fp = fopen("demo.txt", "r+");
 // 進(jìn)行排它型鎖定
if (flock($fp, LOCK_EX)) {
    fwrite($fp, "文件這個(gè)時(shí)候被我獨(dú)占了喲\n");
   // 釋放鎖定
    flock($fp, LOCK_UN);    
} else {
    echo "鎖失敗,可能有人在操作,這個(gè)時(shí)候不能將文件上鎖";
}
fclose($fp);
?>


11. ファイル権限設(shè)定

ファイル権限設(shè)定関數(shù)はシステムで非常に一般的に使用されます。管理レベルのソフトウェア。たとえば、ゲスト グループ (ゲスト ユーザー) は特定のファイルを表示できません。

エンタープライズ管理では、特定のユーザーまたは特定のユーザー ファイルは読み取りのみが許可され、変更は許可されません。これらは非常に一般的に使用される関數(shù)です。

注:

この章は理解のための章です。これまで Linux を?qū)W習(xí)したことがなく、少し難しい場(chǎng)合は、この章を飛ばして、このことについて學(xué)習(xí)してください。

実際の生産プロセスではあまり役に立ちません。

主に Linux に関する包括的な知識(shí)體系を持ち、學(xué)習(xí)に集中できる學(xué)生を?qū)澫螭趣筏皮い蓼埂?

Windows上の一部の機(jī)能は実裝できません。

49.png

上記の機(jī)能の使い方は、Linuxの権限操作の使い方と同じです。
Linux を?qū)W習(xí)した學(xué)生にとっては、比較的簡(jiǎn)単に學(xué)習(xí)できます。これまで學(xué)んだことがない人にとっては少し難しいかもしれません。

アクセス許可を変更する方法を確認(rèn)するための例のみを示します:

chmod は主にファイルのアクセス許可を変更します

<?php
//設(shè)置打開的目錄是D盤
$dir = "d:/";
//判斷是否是文件夾,是文件夾
if (is_dir($dir)) {
    if ($dh = opendir($dir)) {
       //讀取一次向后移動(dòng)一次文件夾指針
       echo readdir($dh).'<br />';
       echo readdir($dh).'<br />';
       echo readdir($dh).'<br />';
       echo readdir($dh).'<br />';
       //讀取到最后返回false
       //關(guān)閉文件夾資源
        closedir($dh);
    }
}
?>



ファイルパス関數(shù)

1 . シナリオの再現(xiàn)

ファイルパスが処理される狀況によく遭遇します。

例:

ファイルのサフィックスを取り出す必要がある

パスはディレクトリではなく名前から取り出す必要がある

パス名のディレクトリパスのみを取り出す必要がある

またはそれぞれ獨(dú)立した値を取得するには、URL の一部を解析する必要があります

自分で URL を作成する場(chǎng)合でも
... ...

多くの場(chǎng)所で、パス処理クラス関數(shù)を使用する必要があります。

一般的に使用されるパス処理関數(shù)をすべての人にマークしました。このパス処理関數(shù)を処理するだけです:

50.png

2.Pathinfo

array pathinfo (string $path)関數(shù): Pass ファイルパスを入力します。ファイルのさまざまなコンポーネントを返します

具體的な例を使用してみましょう:

<?php
//設(shè)置打開的目錄是D盤
$dir = "d:/";
 
//判斷是否是文件夾,是文件夾
if (is_dir($dir)) {
    if ($dh = opendir($dir)) {
       //讀取到最后返回false,停止循環(huán)
       while (($file = readdir($dh)) !== false) {
            echo "文件名為: $file : 文件的類型是: " . filetype($dir . $file) . "<br />";
        }
        closedir($dh);
    }
}
?>

結(jié)果は次のとおりです:

ファイルディレクトリ名: d:/www

完全なファイル名: lib.inc.php
ファイル拡張子: php
拡張子なしのファイル名: lib.inc

3.Basename

string Basename (string $path[, string $suffix])関數(shù): パスを渡してファイル名を返します
パラメータは次のとおりですパスを通過(guò)しました。
2 番目のパラメータは、ファイル名が指定された文字に達(dá)したときに停止することを指定します。

<?php
//修改linux  系統(tǒng)/var/wwwroot/某文件權(quán)限為755
chmod("/var/wwwroot/index.html", 755);  
chmod("/var/wwwroot/index.html", "u+rwx,go+rx");
chmod("/somedir/somefile", 0755);
?>

結(jié)論: これを?qū)g行して、ファイルのディレクトリ部分が返されるかどうかを確認(rèn)できます。

5.parse_url

mixed parse_url (string $path)関數(shù): URLをさまざまな部分に分割します

<?php
$path_parts = pathinfo('d:/www/index.inc.php');
 
echo '文件目錄名:'.$path_parts['dirname']."<br />";
echo '文件全名:'.$path_parts['basename']."<br />";
echo '文件擴(kuò)展名:'.$path_parts['extension']."<br />";
echo '不包含擴(kuò)展的文件名:'.$path_parts['filename']."<br />";
?>

結(jié)果は次のとおりです:

array(8) {

["scheme"]= > 文字列(4) "http"
["ホスト"]=> 文字列(8) "ホスト名"
["ポート"]=> ) "ユーザー名"
["パス"]=> 文字列(8) "パスワード"
["パス"]=> 文字列(9) " arg=value"
["fragment"]=> string(6) "anchor"
}


6.http_build_query

string http_build_query (処理対象の混合 $Data)

関數(shù): URL でクエリを生成文字列

<?php 
echo "1: ".basename("d:/www/index.d", ".d").PHP_EOL;
echo "2: ".basename("d:/www/index.php").PHP_EOL;
echo "3: ".basename("d:/www/passwd").PHP_EOL; 
?>
4.Dirname
dirname(string $路徑) 功能:返回文件路徑的文件目錄部份
<?php
dirname(__FILE__);
?>

の結(jié)果は次のとおりです:

username=liwenkai&area=hubei

http_build_url()

機(jī)能: URL を生成します


注:

PHP_EOL 定數(shù)

は echo "rn" と同等です。 Windows プラットフォームでは、echo "n" に相當(dāng)します。 MAC プラットフォームでは、echo "r" に相當(dāng)します。ファイル処理システムについてはたくさん話しましたが、最も基本的なことさえ書くことができません。

このセクションから始めると、さらに多くのことを書くことができることがわかります。

次に、デモンストレーション効果を見(jiàn)てみましょう:

次のインターフェースにメッセージの內(nèi)容を書き込むためのフォームインターフェース:


メッセージを殘した後の表示インターフェース:


を見(jiàn)てみましょう。ファイル構(gòu)造: index.php --- 入力ボックスとメッセージコンテンツを表示します write.php --- message.txt にデータを書き込みます

message.txt --- チャットコンテンツを保存します

index.php ファイル

<?php
$url = 'http://username:password@hostname:9090/path?arg=value#anchor';
var_dump(parse_url($url));
?>

今表示されたコンテンツを見(jiàn)ると、ファイルが保存されるときに次のことがわかります:

セグメントはセクションに分割されています

コンテンツとユーザーは特殊な記號(hào)を使用して分離されています

それでは、write.php コードを書いてみましょうファイルにメッセージを殘すには:

<?php
//定義一個(gè)關(guān)聯(lián)數(shù)組
$data = [
        'username'=>'liwenkai',
        'area'=>'hubei'
         ];
//生成query內(nèi)容
echo http_build_query($data);
?>
學(xué)び続ける
||
<?php //linux類的讀了方式 readfile("/home/paul/test.txt"); //windows類的讀取方式 readfile("c:\\boot.ini"); ?>
提出するリセットコード
  • おすすめコース
  • コースウェアのダウンロード