PHPを学び始めた素人目線での、大事だったり大事じゃなかったりする雑知識メモ、その⑥です。
フォルダのパーミッションを777にするとは
『フォルダのパーミッションを777に設定する』というのは、そのフォルダに対して全てのユーザーが読み取り、書き込み、実行の全ての権限を持つように設定することを意味します。
アクセス権限
ここでの「777」という数字は、UNIXやLinuxシステムで使用されるパーミッション設定*1の表記方法です。
UNIXやLinuxのファイルシステムでは、ファイルやディレクトリに対して3種類の基本的な「アクセス権限」があります。
読み取り(Read):ファイルの内容を読み取ることができる。ディレクトリの場合、その中にあるファイルやサブディレクトリの一覧を見ることができる。
書き込み(Write):ファイルの内容を変更することができる。ディレクトリの場合、その中に新しいファイルやディレクトリを作成したり、既存のものを削除したりすることができる。
ユーザグループ
これらのアクセス権限は、以下の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が入っているけどそれはスキップしてね」という処理を行っています。
以上です。