【FuelPHP】 File Class
/public/assets
内にあるファイルにアクセスする方法
1. 呼び出し方
以下の関数を実行すると(ブラウザからアクセスできる)ファイルのURLが返ってきます。
File::get_url(DOCROOT."assets/<dir>/<file.extension>")
DOCROOT
内にあるファイル(ここでは/assets/<dir>/<file.extension>
)を取得してそのファイルのURLを返します。DOCROOT
は定数で、<プロジェクトルート>/public
を指しています。
例えば以下のように記述すると、assets
内にある音楽ファイルをブラウザから再生することができます。
<audio controls> <source src="<?php echo File::get_url(DOCROOT."assets/audios/music.mp3") ?>" type="audio/mpeg"> </audio>
2. 設定ファイル
core/config/file.php
にある設定ファイルをapp/config/file.php
にコピーし、以下のように書き換えます(以下のスニペットをそのまま保存してもよい)。
<?php return array( 'base_config' => array( 'basedir' => null, 'extensions' => null, /*ここを書き換える*/ 'url' => \Config::get('base_url')."/", 'use_locks' => null, 'file_handlers' => array(), ), 'areas' => array(), 'magic_file' => null, 'chmod' => array( 'files' => 0666, 'folders' => 0777, ), );
エラー
正しく設定できていないと次のようなエラーが出てきます。
Invalid path
File::get_url()
で指定したパスが正しくありません。ファイルの保存先、または関数内で指定したファイル名を確認してください。
Fuel\Core\FileAccessException [ Error ]: Invalid path for file or directory.
LogicException
LogicException [ Error ]: File operation now allowed: cannot create a file url without an area url.
上述の2. 設定ファイルが正しいかどうか、見直してください。
参考
Fileについて
File Intro - Classes - FuelPHP Documentation
DOCROOT
などの定数について
https://fuelphp.com/docs/general/constants.html:titile