【PHP日記】

自分の知識不足を悟った末、なるべく1日一回、Webに関する知識を書いていくだけのブログ。

PHP雑学⑥ 【17日目】

PHPを学び始めた素人目線での、大事だったり大事じゃなかったりする雑知識メモ、その⑥です。


フォルダのパーミッションを777にするとは

『フォルダのパーミッションを777に設定する』というのは、そのフォルダに対して全てのユーザーが読み取り、書き込み、実行の全ての権限を持つように設定することを意味します。


アクセス権限

ここでの「777」という数字は、UNIXLinuxシステムで使用されるパーミッション設定*1の表記方法です。

UNIXLinuxファイルシステムでは、ファイルやディレクトリに対して3種類の基本的な「アクセス権限」があります。

  • 読み取り(Read):ファイルの内容を読み取ることができる。ディレクトリの場合、その中にあるファイルやサブディレクトリの一覧を見ることができる。

  • 書き込み(Write):ファイルの内容を変更することができる。ディレクトリの場合、その中に新しいファイルやディレクトリを作成したり、既存のものを削除したりすることができる。

  • 実行(Execute):ファイルを実行することができる。ディレクトリの場合、そのディレクトリ内に移動することができる。


ユーザグループ

これらのアクセス権限は、以下の3つのユーザーグループに対して設定されます。

  • ファイル所有者(Owner)

  • ファイル所有者のグループ(Group)

  • その他のユーザー(Others)

それぞれのアクセス権限には数値が割り当てられており、読み取りは「4」、書き込みは「2」、実行は「1」のようになっています。

パーミッション設定を行う際はこれらの数値を組み合わせて特定のユーザーグループに対するアクセス権限を設定します。


たとえば『読み取り』と『書き込み』の権限を設定する場合は、『読み取り(4)+ 書き込み(2)= 6』といった具合です。

777」というパーミッション設定では『所有者、グループ、その他のユーザー』に対して、読み取り「4」、書き込み「2」、実行「1」の権限を与えることを示します。


したがって、全てのユーザーがそのフォルダやその中のファイルを自由に操作できますが、セキュリティ上のリスクが伴うため、通常は必要最低限のアクセス権限を設定することが望ましいです。



csvファイルを読み込んだ中身

以下のようなCSVファイルがあったとします。

a, b, c,
d, e, f

そこに以下のスクリプトを実行して、csvファイルをPHPで読み込んだとします。

$csv = new SplFileObject('abc.csv');
$csv->setFlags(SplFileObject::READ_CSV);

このとき$csvに対してforeachを実行すると、$rowにはCSVファイルが1行ずつ配列として格納されます。

foreach ($csv as $row) {    // $rowにはCSVファイルが一行ずつ入る
    if($line[0] === null) continue;
    ....
}

また、if($line[0] === null) continue;という1文で始まっていますね。これが何なのか確かめるために、CSVファイルの中身を見てみます。

[
    [a, b, c],
    [d, e, f],
    [null]
]

最後には"何もない"を意味するnullが差し込まれていますね。つまり先ほどの処理は「最後にnullが入っているけどそれはスキップしてね」という処理を行っています。



以上です。


*1:ファイルやディレクトリに対してどこまでアクセス可能か、ということを示す許可設定。