メインメニュー
XAMPP アレンジ
IED
WSL2
-
道具箱
リポジトリ編
フレームワーク編
公開ソフトウェア
メタ
リンク
- PHP ライブラリ
- PHP 言語
apricot:publicApricot 公開フォルダ
公開フォルダの作成
以下に示すようにプロジェクトフォルダ下に、公開用のフォルダ
public
を作成し、その下に4つのフォルダ(css
,img
,js
,resources
)と2つの空のファイル(.htaccess
,index.php
)を作成します。/apricot
apricot [プロジェクト] | ├── public [公開フォルダ] | | | ├── css/ [css保存用] | ├── img/ [画像保存用] | ├── js/ [JavaScript保存用] | ├── var/ [データ保存用] | ├── resources/ [ライブラリリソース保存用] | ├── .htaccess [Apacheの設定] | └── index.php [フロントコントローラ]
.htaccess
アプリケーションへの全てのリクエストを1つのフロントコントローラ(index.php)で処理する為に、.htaccess を以下のように編集します。
apricot/public
- .htaccess
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^ index.php [L] </IfModule>
この設定では、ApacheのRewriteEngineを有効にして、publicフォルダ下に実在しないファイル及びフォルダに対する全てのリクエストをindex.phpに転送しています。詳しくはApacheのマニュアルを参照して下さい。
index.php(暫定版)
以下にように index.php を編集します。
/apricot/public
- index.php
<?php //------------------------------------------------------------------- // オートローダーの登録 //------------------------------------------------------------------- require dirname(__DIR__).'/vendor/autoload.php'; //------------------------------------------------------------------- // パスの設定 //------------------------------------------------------------------- $project_path = dirname(__DIR__); $public_path = __DIR__; //------------------------------------------------------------------- // Debug Write //------------------------------------------------------------------- header("Content-type: text/plain; charset=UTF-8"); echo "project_path : {$project_path}\n"; echo "public_path : {$public_path}\n"; echo "\n"; echo "METHOD : {$_SERVER['REQUEST_METHOD']}\n"; echo "URI : {$_SERVER['REQUEST_URI']}\n";
今の index.php では以下の事を行っています。
- オートローダーの登録
- プロジェクトフォルダの設定
- 公開フォルダの登録
これら全ての設定は、index.phpの存在するフォルダからの相対パスで行われていいる点に注目して下さい。これは、公開フォルダとプロジェクトフォルダの関係が相対的に表現できる場所であれば、どこにでも公開フォルダを設定できることを示しています(vendorフォルダはプロジェクトフォルダの直下にあることが決められています)。
通常、プロジェクトフォルダはユーザからアクセスできない場所に設置されます。しかし同時に、これは必ずしもプロジェクトフォルダの直下に公開フォルダがなくてもよいことも意味しています。例えば以下のような構成も可能です。
┌── apricot [プロジェクトフォルダ] | ├── public [公開フォルダ]
┌── apricot [プロジェクトフォルダ] | ├── html | | | └── public [公開フォルダ]
index.phpの起動
ブラウザ上で以下のURLにアクセスしてみて下さい。
http://localhost/ws2019/apricot/public/
次のように表示されます:
project_path : D:\usr\ws2019\apricot public_path : D:\usr\ws2019\apricot\public METHOD : GET URI : /ws2019/apricot/public/
apricot/public.txt · 最終更新: 2020/07/10 09:57 by y2sunlight
コメント