エス技研

WordPress、CakePHP、PHP、baserCMSなどの Web系システムを中心に情報を提供します!


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の関連記事

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のOGPはHTMLヘルパーの$this->Html->meta()を使って設定
CakePHP3でkeywords、DescriptionをHTMLヘルパーを使って設定する
CakePHP3で環境変数を設定して本番環境と開発環境を分けて処理をする場合
 
その他の「CakePHP3」に関する記事一覧
 
 

 - CakePHP 2.x 3.x

GoogleAdwords

GoogleAdwords

最後までお読みいただきましてありがとうございます。
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

下記の空欄を埋めてください。 * Time limit is exhausted. Please reload CAPTCHA.

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

※入力いただいたコメントは管理者の承認後に掲載されます。

  関連記事

CakePHPのバリデーションを入力値・項目の条件によって変える方法を解説
CakePHPのバリデーションを入力値・項目の条件によって変える方法を解説

入力された値によってバリデーション(入力チェック)の内容を切り替える。その処理をCakePHPで実装する方法を解説。条件ごとに unset関数を使ってバリデーションを削除する、という方法を採る。

CakePHP3のCakeDC/Usersでログインユーザの所有レコードのみ更新、削除する権限管理の設定方法
CakePHP3のCakeDC/Usersでログインユーザの所有レコードのみ更新、削除する権限管理の設定方法

CakePHP3のユーザ管理、ログイン認証プラグイン「CakeDC/Users」の権限管理を行う方法やアクセスできるコントローラー、アクションを設定、所有権を持つレコードのみ更新できる設定方法を解説。

CakePHP3でデフォルトのソート条件を設定してユーザの選択肢たソート条件を有効にする方法
CakePHP3でデフォルトのソート条件を設定してユーザの選択肢たソート条件を有効にする方法

CakePHP3でデフォルトのソート条件を設定しつつ画面上でユーザがソート条件を選択したときもソート処理を実行させる方法を解説。ソート条件はページネーションの処理として実装。

CakePHP3でPHPExcelを使ってエクセルファイルを生成、出力する方法

CakePHP3でPHPExcelを利用してエクセルを編集、出力するサンプルソース+解説。PHPExcelのインストール方法の解説からファイル保存とダウンロードの方法なども解説。

CakePHP 2.x系 Viewでのコメントの記述方法など

CakePHPにおいて View、ctpファイルでコメントを記述する方法を解説。

CakePHP3にOGPをfetch、asignを利用してテンプレートごとに指定する方法を解説
CakePHP3にOGPをfetch、asignを利用してテンプレートごとに指定する方法を解説

CakePHP3でOGPを設定する方法を解説。fetch、assignを使用しレイアウトファイルに編集した変数にテンプレートファイルから値を指定する。これを利用してOGPを編集する。

CakePHP3でQRコードを作成、表示するライブラリ「cakePHP-QR-Code-Helper」
CakePHP3でQRコードを作成、表示するライブラリ「cakePHP-QR-Code-Helper」

CakePHPでQRコードを生成するライブラリ「cakePHP-QR-Code-Helper」の紹介。GDライブラリのインストールも必要ないHelperとして提供されているため、ファイルを設置すればすぐに使用可能。

CakePHP3でassociatedを使って関連データをまとめて保存する方法(hasOne、hasMany、belongsTo)

CakePHP3で関連データをまとめて保存する方法。hasOne、hasMany、belongsTo等の関連データはassociatedを追加することでまとめて保存することができます。

CakePHP3のアソシエーションでJOINのタイプのLEFT、INNERを切り替えながら使う方法
CakePHP3のアソシエーションでJOINのタイプのLEFT、INNERを切り替えながら使う方法

CakePHP3でテーブルのアソシエーションしたデータの取得をコントローラー側でINNERかLEFTを指定する方法を解説。TableファイルにINNERで指定していてもController側で変更ができる。

CakePHP3のOGPはHTMLヘルパーの$this->Html->meta()を使って設定
CakePHP3のOGPはHTMLヘルパーの$this->Html->meta()を使って設定

CakePHP3でOGPを設定する方法を解説。metaタグを編集するHTMLヘルパーを利用してOGPのタグを編集する。また、エレメントとして分割することでメンテナンス性も向上させる。