途中でまとめるのが面倒になってしまったのでメモ書きとして残しておく
リポジトリ github.com
環境
- M1 MacBookAir(Big Sur)
- Docker Desktop(3.3.0)
初期ディレクトリ構築
mkdir php-slim cd php-slim # slimのインストール composer create-project slim/slim-skeleton:3.1 app
migrationの導入
Phinxを使う。
# インストール composer require robmorgan/phinx # 初期化 php vendor/bin/phinx init # 必要なディレクトリ作成 mkdir db mkdir db/migrations mkdir db/seeds # マイグレーションファイルの作成 php vendor/bin/phinx create Logs
phinx.phpにDB接続情報を書く。 docker-compose.ymlが下記のような感じだったら、
db: image: mysql:5.7 environment: MYSQL_ROOT_PASSWORD: root MYSQL_DATABASE: app MYSQL_USER: docker MYSQL_PASSWORD: docker ports: - 3306:3306
phinx.phpはこんな感じ。
<?php return [ 'paths' => [ 'migrations' => '%%PHINX_CONFIG_DIR%%/db/migrations', 'seeds' => '%%PHINX_CONFIG_DIR%%/db/seeds', ], 'environments' => [ 'default_migration_table' => 'phinxlog', 'default_environment' => 'development', 'development' => [ 'adapter' => 'mysql', 'host' => '127.0.0.1', 'name' => 'app', 'user' => 'docker', 'pass' => 'docker', 'port' => '3306', 'charset' => 'utf8', ], ], 'version_order' => 'creation', ];
マイグレーションファイルの作成コマンドを実行するとdb/migrations/20210406131917_logs.php
みたいなファイルが生成される。このファイルにテーブルの情報を書いていく。
db/migrations/20210406131917_logs.php
<?php use Phinx\Migration\AbstractMigration; final class Logs extends AbstractMigration { /** * Change Method. * * Write your reversible migrations using this method. * * More information on writing migrations is available here: * https://book.cakephp.org/phinx/0/en/migrations.html#the-change-method * * Remember to call "create()" or "update()" and NOT "save()" when working * with the Table class. */ public function change(): void { $table = $this->table('logs'); $table->addColumn('level', 'string', [ 'default' => null, 'limit' => 255, 'null' => true, 'comment' => 'INFO/WARN/ERROR', ]); $table->addColumn('created', 'timestamp', [ 'default' => 'CURRENT_TIMESTAMP', ]); $table->create(); } }
マイグレーションの実行
php vendor/bin/phinx migrate
ロールバック
php vendor/bin/phinx rollback -e development
composer.jsonのscriptsとして書いておくと便利ですね。
composer.json
"scripts" : { "migrate" : [ "php vendor/bin/phinx migrate" ], "rollback" : [ "php vendor/bin/phinx rollback -e development" ] }
実行
composer migrate composer rollback
詰まった箇所
apache2のルートディレクトリの変更
変更箇所は2箇所
/etc/apache2/httpd.conf /etc/apache2/site-available/000-default.conf
どちらのファイルにも/var/www/htmlになっている箇所があるのでそれを変更する
ルートディレクトリを変更したらInternalServerErrorがでた
https://qiita.com/YAJIMA/items/68de1bdeb71a921a718d
エラー文
Invalid command 'RewriteEngine', perhaps misspelled or defined by a module not included in the server configuration
解決方法
a2enmod rewrite # 再起動 service apache2 restart
それでもNot Foundと出る
AllowOverride All
になっていることを確認する。None
になっていたらpublic配下の.htaccessが読み込めなくなってしまう。
apache2.conf
<Directory /var/www/html/public> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory>