■ディレクトリの操作
通常はあまり使用しないが、以下のようにchdir関数を使って、インタープリタのワーキングディレクトリを変更することができる。
<?php if(chdir('/usr/bin')){ //code } print(getcwd());//'usr/bin' ?>
また、ディレクトリを作りたい場合は、以下のようにmkdir関数を用いる。
<?php if(!mkdir('/usr/bin/test', 0777, true)){ //code print('failed to make a directory.'); } ?>
各関数について
- bool chdir(string $dirname)
- アクセス権が無かったり、ディレクトリそのものが無かったりするとfalseを返す。
- string getcwd(void)
- カレントワーキングディレクトリを文字列で返す。
- bool mkdir(string $dirname[, int $mode=0777[, bool $recursive=false]])
- $dirnameのディレクトリをアクセス権$modeで生成する。ディレクトリを生成する場所の親ディレクトリが存在しない場合は失敗し「false」を返す。但し、第三引数で「true」が設定されていた場合は、親ディレクトリも生成される。
■ファイルアクセスの操作
対象文字列がディレクトリかファイルを調べるには以下のような関数を用いる。
<?php if(is_dir('/usr/bin')){ //code } if(is_file('/usr/bin/test.txt')){ //code } ?>
対象ファイルがPHPからどのような状態にあるか調べるには以下のような関数を使用する。但し、ファイルへのアクセスはシステムのボトルネックとなり得るため、実行結果はキャッシュされ、再度同じ関数をコールするとキャッシュから結果が返る。従って、アクセス権変更後に正しい値を返す必要がある場合は、clearstatcache関数をコールする必要がある。
<?php $file = 'count.txt'; if(is_executable($file)){ //code } if(is_writable($file)){ //code } if(is_readable($file)){ //code } if(is_link($file)){ //code } if(is_uploaded_file($file)){ //code } ?>
ファイルのアクセス権を設定するには、以下のようにchmod関数を用いる。
<?php if(chmod('count.txt', 0644)){ //code } ?>
各関数について
- bool is_dir(string $dirname)
- 対象ディレクトリが存在し、ディレクトリであるならば「true」を返す。
- bool is_file(string $filename)
- 対象ファイルが存在し、ファイルであるならば「true」を返す。
- bool is_executable(string $filename)
- ファイルが実行可能かどうか調べる。
- bool is_writable(string $filename)
- ファイルが書き込み可能かどうか調べる。
- bool is_readable(string $filename)
- ファイルが読み込み可能かどうか調べる。
- bool is_link(string $filename)
- ファイルがシンボリックリンクかどうか調べる。
- bool is_uploaded_file($_FILE[$key][‘tmp_name’])
- 引数で指定されたファイルがアップロードされたものかどうか調べる。
- bool chmod(string $filename, int $mode)
- $filenameのファイルのアクセス権を$mode(8進数)に設定する。