目次

Apricot 公開フォルダ

y2sunlight 2020-03-24

Apricot に戻る

関連記事

ここからの作業は基本的にEclipseで行います。


公開フォルダの作成

以下に示すようにプロジェクトフォルダ下に、公開用のフォルダ 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/