画像ファイルをアップロードするサンプルプログラムは色々なサイトに掲載されているが、アップロード後にファイルのアクセス権限(パーミッション)を変更する必要がある事はあまり書かれていない。
開発中のサイトから本番サーバへデータをFTPでアップした時にアップロードできず困ったので調べてみたら原因はこれだった。
phpでアップロードしたファイルは所有者はApacheでアクセス権限は「600」つまり所有者(Apache)は呼び出し、書込みが可能だがそれ以外はアクセスできない状態になっている。
登録したファイルを削除する場合FTPを使って削除する事が多いと思うが、通常FTPではユーザとしてApacheを使わないのでこれらのファイルを削除できなくなってしまう。
そこで下記のコマンドをファイルアップロード命令(move_uploaded_file)の下に実行しておく。
chmod("ファイル保存場所",0666);
誰でも読み込み、書込み可に変更するという意味。
これをやっておかないとtelnetかSSHでrootでログオンしてchmodを使って変更するか、パーミッションを変更するためのプログラムを別に書くとかしないと削除できなくなってしまう。特にレンタルサーバを使っている人は要注意だ。
ついでに、画像サイズを調べる方法も、
$size = getImageSize("ファイル保存場所");
$size[0]に横幅、$size[1]に縦幅のピクセル数で戻ってくる。
サイズが大きい場合にはエラーを発生させて登録できないようにする時に使える。
以上、開発中の備忘録として記す。
開発中のサイトから本番サーバへデータをFTPでアップした時にアップロードできず困ったので調べてみたら原因はこれだった。
phpでアップロードしたファイルは所有者はApacheでアクセス権限は「600」つまり所有者(Apache)は呼び出し、書込みが可能だがそれ以外はアクセスできない状態になっている。
登録したファイルを削除する場合FTPを使って削除する事が多いと思うが、通常FTPではユーザとしてApacheを使わないのでこれらのファイルを削除できなくなってしまう。
そこで下記のコマンドをファイルアップロード命令(move_uploaded_file)の下に実行しておく。
chmod("ファイル保存場所",0666);
誰でも読み込み、書込み可に変更するという意味。
これをやっておかないとtelnetかSSHでrootでログオンしてchmodを使って変更するか、パーミッションを変更するためのプログラムを別に書くとかしないと削除できなくなってしまう。特にレンタルサーバを使っている人は要注意だ。
ついでに、画像サイズを調べる方法も、
$size = getImageSize("ファイル保存場所");
$size[0]に横幅、$size[1]に縦幅のピクセル数で戻ってくる。
サイズが大きい場合にはエラーを発生させて登録できないようにする時に使える。
以上、開発中の備忘録として記す。