CakePHP3でDocumentRootやtmp、webroot、logsなどのフォルダへのパスの定数
2018/07/28
DocumentRoot、tmp、webroot、logsなどのフォルダへのパスの定数
CakePHP3でファイルのアップロードや csvファイルの生成、エクセルファイルの生成などファイルを扱う処理を構築する際、そのファイルを保存する時などにフォルダを指定する必要があります。
ですが、フォルダをどうやって指定すればいいのか、その情報を見つけることができずに困っていましたが、それを発見しましたのでご紹介します。
ちなみに、CakePHP3でエクセルファイルを生成する方法や、ファイルをアップロードする方法は下記に記事を書いていますので、あわせて参考にしてみてください。
CakePHP3でPHPExcelを使ってエクセルファイルを生成、出力する方法
CakePHP3でファイルのアップロード処理を自作・解説付き・その1
CakePHP3で画像・ファイルのアップロード処理を自作・解説付き・その2
また、ここで解説している定数は、サーバ上のパスが設定されています。
対して、プログラムが実行されているドメインや URLを取得したい場合は、下記に記事を書きましたので、こちらを参考にしてください。
CakePHP3でDocumentRootやwebroot、imgフォルダのURLやドメイン、パスを取得
CakePHP3の webroot、tmp、logs、config、cache、srcなどのパスの定数
CakePHP3でよく使う webroot、tmp、logs、config、cache、srcなどのパスの定数は、下記の「paths.php」ファイルに書いてあります。
/config/paths.php
具体的に「paths.php」ファイルに指定されている定数は以下の通りです。
ROOT
CakePHP3のアプリケーションを構築しているルートフォルダのパスです。
具体的には、下記のパスになります。
(CakePHP3のフォルダ)
例:Windowsの XAMPPの場合:C:\xampp\htdocs\
APP_DIR
CakePHP3のアプリケーションの作成するソースファイルが入っているフォルダの名称です。この定数はパスではなくフォルダ名です。
具体的には、下記の値になります。
src
APP
CakePHP3のアプリケーションの作成するソースファイルが入っているフォルダのパスです。
具体的には、下記のパスになります。
(CakePHP3のフォルダ)/src/
例:Windowsの XAMPPの場合:C:\xampp\htdocs\src\
CONFIG
設定情報が入っている「config」フォルダのパスです。
具体的には、下記のパスになります。
(CakePHP3のフォルダ)/config/
例:Windowsの XAMPPの場合:C:\xampp\htdocs\config\
WWW_ROOT
imgフォルダや CSSフォルダなどがある「webroot」フォルダのパスです。
画像ファイルのアップロード処理などを作る場合によく使うことになる定数ですね。
「webroot」のフォルダのパスになります。
具体的には、下記のパスになります。
(CakePHP3のフォルダ)/webroot/
例:Windowsの XAMPPの場合:C:\xampp\htdocs\webroot\
TESTS
テストスクリプトが生成される「tests」フォルダのパスです。
具体的には、下記のパスになります。
(CakePHP3のフォルダ)/tests/
例:Windowsの XAMPPの場合:C:\xampp\htdocs\tests\
TMP
一時ファイルを保存するフォルダ「tmp」フォルダのパスです。
エクセルファイルのダウンロード処理や、公開しないファイルのアップロード先などに指定するときに使うことになるパスですね。
具体的には、下記のパスになります。
(CakePHP3のフォルダ)/tmp/
例:Windowsの XAMPPの場合:C:\xampp\htdocs\tmp\
LOGS
ログファイルが保存される「logs」フォルダのパスです。
具体的には、下記のパスになります。
(CakePHP3のフォルダ)/logs/
例:Windowsの XAMPPの場合:C:\xampp\htdocs\logs\
CACHE
キャッシュファイルが保存される「cache」フォルダのパスです。
具体的には、下記のパスになります。
(CakePHP3のフォルダ)/tmp/cache/
例:Windowsの XAMPPの場合:C:\xampp\htdocs\tmp\cache\
CAKE_CORE_INCLUDE_PATH
CakePHP3のコアファイル「cakephp」フォルダへの絶対パスです。
下記の「CORE_PATH」との違いは、「CAKE_CORE_INCLUDE_PATH」には DS(ディレクトリセパレーター)がなく、「CORE_PATH」には DSがあります。
また、コンポーザーを使ってインストールする際はこの値が使われます。
具体的には、下記のパスになります。
(CakePHP3のフォルダ)/vendor/cakephp/cakephp
例:Windowsの XAMPPの場合:C:\xampp\htdocs\vendor\cakephp\cakephp
CORE_PATH
CakePHP3のコアファイル「cakephp」フォルダへのパスです。
「CAKE_CORE_INCLUDE_PATH」に DS(ディレクトリセパレーター)を追加したものになります。
具体的には、下記のパスになります。
(CakePHP3のフォルダ)/vendor/cakephp/cakephp/
例:Windowsの XAMPPの場合:C:\xampp\htdocs\vendor\cakephp\cakephp\
CAKE
「CORE_PATH」の中の「src」フォルダのパスです。
具体的には、下記のパスになります。
(CakePHP3のフォルダ)/vendor/cakephp/cakephp/src/
例:Windowsの XAMPPの場合:C:\xampp\htdocs\vendor\cakephp\cakephp\src\
realpath()関数
CakePHP3には、「realpath()」関数というフォルダのパスを取得するすることができる関数があります。
この「realpath()」関数は、先に説明した各フォルダを示す定数と合わせて使うことで、フォルダのパスを取得するときに威力を発揮してくれます。
例えば、定数「CAKE」のパスに対して、相対パス「../../cakephp」を追加して下記の様に記述すると、
realpath(CAKE . "../../cakephp/")
「(CakePHP3のフォルダ)/vendor/cakephp/cakephp」という「CAKE」からの相対パスになるフォルダの絶対パスを返してくれる、という関数です。
なので、定数として指定してあるフォルダの場所から相対パスを組み合わせて、その上で「realpath()」関数を使う方法で、おおよそ必要となるフォルダの場所は簡単に取得ができるようになります。
また、「realpath()」関数を通すと、パスの最後の DS(ディレクトリセパレーター)がなくなります。
そのため、本来の使い方ではないと思いますが、定数の最後に DS(ディレクトリセパレーター)があるのかないのか分からない場合は、とりあえず「realpath()」関数を通すと DSがなくなりますので、最後の DSを外す関数として使うのもありなんじゃないでしょうか。
CakePHP3の関連記事
CakePHP4のCSS、JavaScript、画像のブラウザへのキャッシュをコントロールするCakePHP3でレコードを保存(追加、更新、Insert、Update)する複数の方法を紹介
CakePHP3でモデルなしフォームからCSVをアップロードしレコードを更新する方法解説
CakePHP3でPHP Simple HTML DOM Parserを使ってスクレイピングする方法
CakePHP3のInsert On Duplicate Key Update(upsert)構文を解説・バルク処理も
CakePHP3の1対多での連携を中間テーブルを使った多対多の連携に変更するときの手順
CakePHP3でデフォルトのソート条件を設定してユーザの選択肢たソート条件を有効にする方法
CakePHP3で Ajaxを使う方法の解説。3.6以降対応。Successとthenの両方を解説。
CakePHP3でパンくずの指定は HTMLヘルパーを使って指定する方法を解説
CakePHP3にOGPをfetch、asignを利用してテンプレートごとに指定する方法を解説
その他の「CakePHP3」に関する記事一覧
GoogleAdwords
GoogleAdwords
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!
関連記事
-
-
CakePHP4のクリエビルダーを使用してOR条件をAND条件でつなぐSQL文を作る方法
CakePHP4のクリエビルダーを使って複数のOR条件をANDでつなぐSQL文を作成する方法を解説。OR条件を記述したwhere句を2つつなげて記述する。
-
-
MySQL+CakePHPのdate型、datetime型項目は「2999-12-31」までしか扱えない
CakePHPの日付、日時の型であるdate型、datetime型の最大値は2999-12-31となっている。MySQLは9999年までなので違いがあるので注意が必要だ。
-
-
CakePHP4、5で$_SERVERと同じようにURIを取得する「getUri()」の紹介
PHPでサーバ情報、環境情報を取得する際は「
$_SERVER
」を利用するが、似たような情報をCakePHPの関数で取得する際は「getUri()
」を使用する。取得出来る値は一致するものもあるが、違うものもあり便利な使い方もある。
-
-
CakePHP3のメッセージ日本語化の設定(国際化と地域化の機能の使い方の解説)
CakePHP3の英語のメッセージを日本語化(多言語化)する手順を解説。オリジナルのメッセージを作成する方法やプログラムで文言を追加する場合の対応なども解説。
-
-
CakePHP 2.3 Model、Controllerの見たい変数の中身をログ出力
CakePHPの Modelや Controllerの変数の中身をログとして出力して見る方法を提供します。
-
-
CakePHP3にOGPをfetch、asignを利用してテンプレートごとに指定する方法を解説
CakePHP3でOGPを設定する方法を解説。fetch、assignを使用しレイアウトファイルに編集した変数にテンプレートファイルから値を指定する。これを利用してOGPを編集する。
-
-
CakePHP 2.3 連携先のテーブルの項目で条件抽出する場合
アソシエーション(連携)している先のテーブルの項目で条件抽出する際の考え方と注意点をサンプルソースを用いて説明しています。
-
-
CakePHP3でComposerでインストールできないプラグイン、外部ライブラリを vendorに入れて手動で読み込む方法
CakePHP3にComposerからインストールできないプラグインやライブラリなどを利用する方法、vendorにファイルを設置し、composer.jsonを更新し、それを呼び出す方法を詳細に解説。
-
-
CakePHP4でロギングスコープやログレベルを使用してログを出し分ける方法を解説
CakePHPのログ出力方法の解説。app.phpにログ設定をし、スコープやレベルを指定してログ出力を振り分ける方法、CakePHP4で配列出力にはvar_exportが必要なことなどを解説。
-
-
CakePHP4のFrozenDateで1ヵ月前、先月、今月1日、来月末の日付などを算出する方法
CakePHPには「FrozenDate」の日付を扱う関数が用意されている。これを利用して、1ヶ月後、月末日、月初日、5日後などを指定して日付を取得できる。それを解説。