経緯
slimphp/Slim-Skeleton を サブディレクトリに配置しつつ、 app/ や src/, vendor/ 等のディレクトリはドキュメントルートより上の階層にデプロイした状態で動作させることができたのでメモしておきます。
ディレクトリ構造
var/
└ www/
└ sampleapp/
├ slim-app/ // Slim4-Skeleton 本体 ( public/ ディレクトリ以外) デプロイ先
│ ├ app/
│ ├ src/
│ ├ vendor/
│ └ etc.
│
└ public_html/ // ドキュメントルート
└ subdirectory/ // サブディレクトリ
└ sub2/ // 2個目のサブディレクトリ
├ .htaccess // Slim4-Skeleton の public/ ディレクトリにある .htaccess
└ index.php // Slim4-Skeleton の public/ ディレクトリにある index.php
今回の最終的な構成はこのようになりました。
この階層構成は
- アプリケーション本体はドキュメントルート下には置きたくない
- 複数の Slim アプリケーションを配置する可能性がある
- サブディレクトリも深い階層に設置する可能性がある
ということで、本体のデプロイディレクトリやドキュメントルート下のサブディレクトリをそれぞれ1つずつ余計に掘っています。
手順
すぐ削除するデモ環境なので割と雑に設定を。
# cd /var/www/sampleapp/
# mkdir slim-app
# chown apache:apache slim-app/
# chmod 775 slim-app/
# ls -al
合計 16
drwxr-xr-x 4 ADMIN ADMIN 4096 MM月 dd yyyy hh:ii .
drwxr-xr-x 18 ADMIN ADMIN 4096 MM月 dd yyyy hh:ii ..
drwxrwxr-x 2 apache apache 4096 MM月 dd yyyy hh:ii slim-app
drwxrwxr-x 4 apache apache 4096 MM月 dd yyyy hh:ii public_html
#
# pwd
/var/www/sampleapp/
FTP 等で subdirectory/
, subdirectory/sub2/
を掘ります。
この状態になったら、
/var/www/sampleapp/slim-app/
にpublic/
以外(他不要なファイル・ディレクトリは都度省く)をアップロード/var/www/sampleapp/slim-app/logs/
の権限を 777 、/var/www/sampleapp/slim-app/logs/app.log
を 666 にする- ソースコードの
public/index.php
内で__DIR__ . '/../~~~.php';
となっているパスを__DIR__ . '/../../../slim-app/~~~.php';
とデプロイ先の環境のパス階層に合わせる /var/www/sampleapp/public_html/subdirectory/sub2
にpublic/
以下のファイルをアップロード
として動作することを確認しました。なお、 public/.htaccess
はデフォルトのままでOKでした。
なお、DBがある場合でDBサーバ上で必要な場合は接続情報を変更すること (接続元Webサーバがローカルの開発環境とサーバで異なるので別権限が必要)。