CakePHP2のapp/tmp以下のディレクトリ及びファイルのパーミッションを777にするシェルスクリプト
2014/06/29
CakePHP2のtmpディレクトリ以下のディレクトリ、ファイルのパーミッションを777にするシェルスクリプトを作成したので、その忘備録としてポストします。
手持ちのローカルサーバでCakePHP2(2.3.10)を使ってcronを起動させる、前回のポストネタをテストしていた時、app/tmp/以下に作成されるファイルの所有者がなぜか何種類もできてしまい、「書き込みの権限がないよ」というエラーが頻発する事態に陥りました。
CakePHP2では、tmp以下のディレクトリに自動作成されるファイルに対してumaskの設定できるのですが、パーミッションが644、666のファイルが入り混じって作成されもはやカオス状態に。
仕方ない(面倒臭い)ので、10分に1回ぐらいの割合でtmp以下のディレクトリ、ファイルに対してパーミッションを全て777にしてしまえと作成したのが、以下のシェルスクリプト。
何かの役に立てば幸いです。
permission_change.sh
1 2 3 4 5 6 |
#!/bin/sh # 文字コード:UTF-8 # 改行コード:LF cd /path/to/cakephp find ./tmp -type d -o -type f -exec chmod 0777 {} \; |
find コマンドで、-type d (ディレクトリ)-type f (ファイル)を検索し、
-exec で chmod を実行しパーミッションを 0777 にする、という意味になります。
文字コード:UTF8、改行コード:LFで保存し、任意の場所にアップロードし、cronに仕込めば出来上がり。
組み込みはこんな感じで。
1 2 3 4 5 6 |
# crontab -e # i ##[i]キー押下でインサートモードに */10 9-19 * * * /path/to/script/permission_change.sh 2>>/path/to/logs/cron_err.log # [Esc][:][w][q] ##保存して終了 |
-bash: /file/to/path/dbdump.sh: /bin/sh^M: bad interpreter: そのようなファイルやディレクトリはありません
ってエラーが出るようでしたら、文字コードがUTF8になっていないと考えられるので、手前味噌ですが「viエディタで改行コードを変換する方法。」辺りを読んで対応してください。