- 更新日: 2016年2月18日
- PHP & CakePHP
SplFileInfo::openFileエラー/CakePHP3
ローカルの CakePHP 3 開発環境で、表題のとおり SplFileInfo::openFile が発生しました。エラーメッセージの詳細は以下。
1 2 3 |
Warning (512): SplFileInfo::openFile(/path/to/cake_app/tmp/cache/persistent/myapp_cake_core_translations_debug_kit_en__u_s): failed to open stream: Permission denied [CORE/src/Cache/Engine/FileEngine.php, line 395] |
どうやら tmp/cache ディレクトリのパーミッションによるエラーっぽい。
— 環境 —
PHP 5.5.19
CakePHP 3.1.1
tmp ディレクトリ以下のパーミッションを 777 にして解決
例によって CakePHP のことを検索で調べますと、CakePHP 2 の情報はたくさんひっかかるのだけど、CakePHP 3 の情報はけっこう少ない。stackoverflow などを当たりまして…
1 2 3 |
$ chmod -R 777 /path/to/cake_app/tmp |
上記のコマンドを実行してパーミッションを変更しました。少々力技ですけど、ローカル環境だしとりあえずの対処。
これで、SplFileInfo::openFileエラーが消えました。時間がなかったので、SplFileInfo::openFile エラーについてはこの対処法で一旦解決とした。
CakePHP2 であれば Cache::config に mask オプションを追加
調査の過程で、ほかに Cache::config で mask の 0666 設定を追加する解決方法を多数見つけました。ただし、自分が見つけた範囲ではいずれも CakePHP 2 の場合のエラー対処法だった。以下のように mask オプションを追加してやると良いらしい。
app/Config/core.php
1 2 3 4 5 6 7 8 |
Cache::config('_cake_core_', array( // ... 'mask' => 0666 )); Cache::config('_cake_model_', array( / ... 'mask' => 0666 )); |
app/Config/bootstrap.php
1 2 3 4 |
Cache::config('default', array( 'engine' => 'File', 'mask' => 0666 )); |
CakePHP 3 ではこの方法は試していないので、上手くいくかどうかは分かりません。とりあえず将来必要になるかもしれないのでメモ。
- – 参考リンク –
- Facing a file permission error while running CakePHP 3.0 in Linux – Stack Overflow
- Vagrantで設定を進める、CakePHP編 – Qiita
- VagrantでCakePHPの開発環境をつくる。エラーとか警告を綺麗にするまで。 – Qiita
- [CakePHP]SplFileInfo::openFileエラーの対応方法 – メディア運営ニッキ | メディア運営ニッキ
- PHP & CakePHP の関連記事
- PHP+MySQLでNo such file or directoryエラー
- bin/cakeコマンドでintlエラーが出る場合の対処(CakePHP)
- CakePHPアプリケーションをCapistranoでデプロイ
- Integrity constraint violation:Column ‘created’ in order clause is ambiguousエラー/CakePHP
- CakePHPでDB関連テーブルのレコード・データを取得
- CakePHPでカラム属性に別名/エイリアスを付ける仮想フィールド
- CakePHPで日付選択フォームのカスタマイズ
- CakePHP3で現在のコントローラー名・アクション名を取得
- PHPインストールでconfigure: error: freetype.h not foundエラー
- CakePHPでログイン後に元のページにリダイレクトさせる
Leave Your Message!