【Docker環境構築】PHP5.3.3 + Apache + MySQL + phpMyAdminにFuelPHPをインストール - Qiita
git clone https://github.com/snyt45/docker_php5.3.3_fuelphp.git
cd docker_php5.3.3_fuelphp/
docker-compose up -d
docker ps
でコンテナの稼働状況を確認
ちょっと時間を置いてアクセス。
# コンテナID確認
docker ps
# phpコンテナに入る
docker exec -it docker_php533_fuelphp_php_1 /bin/bash
# composerのインストール
curl -sS https://getcomposer.org/installer | php
# composerをコマンドで扱うために環境変数で使えるディレクトリ配下に移動
mv composer.phar /usr/local/bin/composer
# composerのバージョン確認
composer --version
# fuel phpのoilコマンドインストール
curl https://get.fuelphp.com/oil | sh
# fuel phpのoilコマンドインストール確認
which oil
# fuel phpのインストール
composer create-project fuel/fuel:dev-1.7/master sample
インストール中に、Githubでアクセストークンを取得してとエラーが出るはずなので、 指定されてるURLでアクセストークンを発行して、トークンを貼り付けてEnter。
fuelphpをインストール後、ホスト側にsampleというフォルダが作成されていればOKです。
以前は、このコマンドで1.7.2がインストールされるみたいですが現在は1.7.3がインストールされるみたいです。
sampleの中にfuel、public、docsフォルダが作成される。 docsフォルダは特に必要ないので削除
httd.confでDocumentRootが/var/www/html/publicを設定している。
fuelphpのpublicフォルダが公開フォルダになるので、 /var/www/html/にpublicフォルダのシンボリックリンクを貼る。
ln -s /app/sample/public/ /var/www/html/
http://localhost:8080/ にアクセスしてfuelphpの画面が表示されればOK
/var/www/html/publicから、/sample/publicのindex.phpをみる。 index.phpの下記の場所のディレクトリを通常は変更する必要があるが、 pubilc本体の場所に変更はないので、特に変更の必要はない。
/**
* Path to the application directory.
*/
define('APPPATH', realpath(__DIR__.'/../fuel/app/').DIRECTORY_SEPARATOR);
/**
* Path to the default packages directory.
*/
define('PKGPATH', realpath(__DIR__.'/../fuel/packages/').DIRECTORY_SEPARATOR);
/**
* The path to the framework core.
*/
define('COREPATH', realpath(__DIR__.'/../fuel/core/').DIRECTORY_SEPARATOR);
/sample/fuel/app/config/config.phpを以下のようにコメントアウトを外す。
/**************************************************************************/
/* Always Load */
/**************************************************************************/
'always_load' => array(
/**
* These packages are loaded on Fuel's startup.
* You can specify them in the following manner:
*
* array('auth'); // This will assume the packages are in PKGPATH
*
* // Use this format to specify the path to the package explicitly
* array(
* array('auth' => PKGPATH.'auth/')
* );
*/
'packages' => array(
'orm',
),
/**
* These modules are always loaded on Fuel's startup. You can specify them
* in the following manner:
*
* array('module_name');
*
* A path must be set in module_paths for this to work.
*/
// 'modules' => array(),
/**
* Classes to autoload & initialize even when not used
*/
// 'classes' => array(),
/**
* Configs to autoload
*
* Examples: if you want to load 'session' config into a group 'session' you only have to
* add 'session'. If you want to add it to another group (example: 'auth') you have to
* add it like 'session' => 'auth'.
* If you don't want the config in a group use null as groupname.
*/
// 'config' => array(),
/**
* Language files to autoload
*
* Examples: if you want to load 'validation' lang into a group 'validation' you only have to
* add 'validation'. If you want to add it to another group (example: 'forms') you have to
* add it like 'validation' => 'forms'.
* If you don't want the lang in a group use null as groupname.
*/
// 'language' => array(),
),
先に、sample\fuel\app\config\development\db.phpを編集する。 dsn部分のみ抜粋。 マイグレーション時、dsnのdbnameで指定したデータベースにテーブルが作成されます。
'dsn' => 'mysql:host=mysql;dbname=fuel_dev;unix_socket=/tmp/mysql.sock',
MySQL にデータベースを作成します。 http://localhost:4040/ のSQLで以下のコマンドを実行。
CREATE DATABASE `fuel_dev` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
必要なモデルの作成とマイグレーションの実行。
cd /app/sample
php oil generate model hoge name:varchar[255] sex:int del_flg:bool
php oil refine migrate
http://localhost:4040/ にアクセスして、hogesテーブルができていることを確認します。
cd /app/sample
php oil generate controller example index add
/sample/fuel/app/config/routes.phpで、TOPページになるコントローラーを指定。
<?php
return array(
'_root_' => 'example/index',
...
);
再度 http://localhost:8080/ にアクセスして、以下の画面が表示されれば成功です。
Docker × Visual Studio CodeでPHP開発【デバッグ実行】 - Qiita
<?php
echo 'Hello World<br>';
// hostname, user, password, db name
$mysqli = new mysqli('mysql', 'root', 'root', 'fuel_dev');
if ($mysqli->connect_error) {
echo $mysqli->connect_error;
exit();
} else {
$mysqli->set_charset("utf8");
}
$sql = "SELECT id, name FROM test";
if ($result = $mysqli->query($sql)) {
while ($row = $result->fetch_assoc()) {
echo "ID:" . $row["id"] . " NAME:" . $row["name"] . "<br>";
}
$result->close();
}
$mysqli->close();
5. http://localhost:8080/ にアクセスして、ブレークポイントで止まれば完了!
ちょっと混乱したのでメモ。 下記の2種類のoilコマンドがあります。
①/usr/local/bin/oil → curl https://get.fuelphp.com/oil | sh で追加
・どこでも使える
②fuel-app/oil → oil create fuel-app で追加
・fuel-app配下にいないと使えない。
PHP5.3.3環境を2017年に用意する方法 - Qiita
docker-compose で PHP7.2 + Apache + MySQL + phpMyAdmin 環境を構築 - Qiita
FuelPHP 1.7.2のComposerによるインストール — A Day in Serenity (Reloaded) — PHP, FuelPHP, Linux or something