CakePHP3를 문서 루트 외부에 설치
CakePHP3 설치 자체는 Composer 을 사용하면 쉽게 설치할 수 있다는 것을 알았습니다.
다만, 문서 루트 내에 인스톨한 것만으로, CakePHP3 의 프로그램군을 문서 루트내에 두는 것은 그다지 바람직하지 않다. .
그래서 이번에는 CakePHP3를 문서 루트 밖에 설치하고 개발 · 운용할 수 있도록 설치하고 싶습니다.
※ 이 기사에서의 CakePHP3 의 인스톨 방법에서는, 2017년 2월 4일 시점에서 인스톨 되는 CakePHP3 의 버젼은
3.3.13
이었으므로, CakePHP 3.3.13 을 바탕으로 기사를 작성하고 있습니다. 버전의 차이에 따라 설정 방법 등이 변경될 수 있습니다.서버 환경
이번에는 Vagrant를 사용하여 위의 구성으로 가상 환경을 구축했습니다.
문서 루트 정보
[vagrant@localhost ~]$ tree -d -L 2 /vagrant/
/vagrant/
├── html <- ドキュメントルート
└── program
/vagrant/html
디렉토리를 문서 루트로 하고, CakePHP3 는 /vagrant/program
디렉토리내에 인스톨 하는 가정으로 작업을 실시합니다.작업 절차
1. CakePHP3 설치
우선, CakePHP3 를 인스톨 하지 않으면 시작되지 않습니다. 아래 절차에 따라
/vagrant/program
디렉토리에 CakePHP3을 설치합니다.# 1. /vagrant/program ディレクトリに移動
[vagrant@localhost ~]$ cd /vagrant/program/
# 2. composer create-project --prefer-dist cakephp/app cakephp を実行して CakePHP3 をインストールする
[vagrant@localhost program]$ composer create-project --prefer-dist cakephp/app cakephp
Composer
에 경로가 없으면 php composer.phar create-project --prefer-dist cakephp/app cakephp
를 실행하십시오.이것으로 CakePHP3 설치가 완료되었습니다. 설치가 완료되면 다음과 같은 디렉토리 구성이 됩니다.
[vagrant@localhost ~]$ tree -d -L 3 /vagrant/
/vagrant/
├── html
└── program
└── cakephp
├── bin
├── config
├── logs
├── plugins
├── src
├── tests
├── tmp
├── vendor
└── webroot
2. webroot 디렉토리의 파일이나 디렉토리를 /vagrant/html 디렉토리에 복사
CakePHP3 설치가 완료되면
/vagrant/program/cakephp/webroot
디렉토리의 파일과 디렉토리를 /vagrant/html
디렉토리에 복사합니다.# 下記コマンドで /vagrant/program/cakephp/webroot ディレクトリ内のファイルやディレクトリを /vagrant/html ディレクトリにコピーする
[vagrant@localhost ~]$ cp -apvr /vagrant/program/cakephp/webroot/* /vagrant/program/cakephp/webroot/.[^.]* /vagrant/html/
webroot
디렉토리내의 파일이나 디렉토리를 무사하게 카피 할 수 있으면 다음과 같은 디렉토리 구성이 됩니다.[vagrant@localhost ~]$ tree -d -L 3 /vagrant/
/vagrant/
├── html
│ ├── css
│ ├── font
│ ├── img
│ └── js
└── program
└── cakephp
├── bin
├── config
├── logs
├── plugins
├── src
├── tests
├── tmp
├── vendor
└── webroot
3. index.php 편집
/vagrant/program/cakephp/webroot
디렉터리의 파일이나 디렉터리 복사가 완료된 것만으로는 제대로 작동하지 않습니다. index.php
파일내에 기술되고 있는 내용을 편집하지 않으면 파일을 읽어들일 수 없어 에러가 됩니다.그래서 에러가 되지 않게
/vagrant/html/index.php
의 27 행과 33 행째의 파일 패스와 디렉토리 패스를 이하와 같이 재기록합니다.<?php
/**
* The Front Controller for handling every request
*
* CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
* Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
*
* Licensed under The MIT License
* For full copyright and license information, please see the LICENSE.txt
* Redistributions of files must retain the above copyright notice.
*
* @copyright Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
* @link http://cakephp.org CakePHP(tm) Project
* @since 0.2.9
* @license MIT License (http://www.opensource.org/licenses/mit-license.php)
*/
// for built-in server
if (php_sapi_name() === 'cli-server') {
$_SERVER['PHP_SELF'] = '/' . basename(__FILE__);
$url = parse_url(urldecode($_SERVER['REQUEST_URI']));
$file = __DIR__ . $url['path'];
if (strpos($url['path'], '..') === false && strpos($url['path'], '.') !== false && is_file($file)) {
return false;
}
}
/** 27行目 ここの require 部分を以下の1行を追加し書き換える **/
// require dirname(__DIR__) . '/vendor/autoload.php';
// cakephp までのパスを生成
$cakephpRoot = realpath(dirname(__FILE__) . '/../program/cakephp');
require $cakephpRoot . '/vendor/autoload.php';
use App\Application;
use Cake\Http\Server;
// Bind your application to the server.
// $server = new Server(new Application(dirname(__DIR__) . '/config'));
/** 33行目 ここの config ディレクトリまでのパスを以下に書き換える **/
$server = new Server(new Application($cakephpRoot . '/config'));
// Run the request/response through the application
// and emit the response.
$server->emit($server->run());
표시 확인
위의 작업 순서대로 작업을 하고 브라우저에서 액세스하여 아래와 같이 표시되면 무사히 CakePHP3를 문서 루트 외부에 설치하는 데 성공합니다.
만약 CakePHP3 를 문서 루트 밖에 설치하고 싶은 분은 참고해 보세요.
Reference
이 문제에 관하여(CakePHP3를 문서 루트 외부에 설치), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ina_ryu/items/0fa3341fcdc56f8686a0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)