Php
インストール
Mac
Composerは公式参照.
CakePHP
起動しようとしたときのエラー対応
You must enable the intl extension to use CakePHP
| You must enable the intl extension to use CakePHP. ~~ requirements.php on line 31
Fatal error: You must enable the intl extension to use CakePHP. in C:\xampp\htdocs\my_app\config\requirements.php on line 31
|
解決方法: 「php.ini」にある;extension=intl
を開放してXAMPP再起動.
No such file or directory ~~ index.php on line 31
自分のCakePHPアプリのディレクトリに移動してcomposer update
.
An Internal Error Has Occurred.
config/app.php
のデバッグレベルを以下のように変更.
| /*
* Debug Level:
*
* Production Mode:
* false: No error messages, errors, or warnings shown.
*
* Development Mode:
* true: Errors and warnings shown.
*/
'debug' => filter_var(env('DEBUG', true), FILTER_VALIDATE_BOOLEAN),
|
Security::setSalt() must be of the type string, null given, called in~~
env
の第二引数に32文字指定.
| 'Security' => [
'salt' => env('SECURITY_SALT', 'dfc123c6c22d84f4bc12273f3df67c6ae55009696e4126b36ac2f755778faccc'),
],
|
Laravel
PHP
とComposer
のインストールまで済ませていること.
APIを立ち上げる
sail php artisan serve
でサーバーを立ち上げる
APIのエラー処理
Docker
のキャッシュをクリアして再ビルド
| ./vendor/bin/sail build --no-cache
|
Laravel Sail
Laravel sailでコンテナを再構築
| ./vendor/bin/sail build --no-cache
./vendor/bin/sail up
|
Laravel sailでプロジェクトを初期化
sail
用の初期化. laravel-test-sample
の部分は新規作成したいプロジェクト名にする
| curl -s "https://laravel.build/laravel-test-sample" | bash
|
.bashrc
または.zshrc
にエイリアスを設定する.
| alias sail='[ -f sail ] && sh sail || sh vendor/bin/sail'
|
データベースはconfig/database.php
で設定する. 初期設定はmysql
. docker-compose.yml
でmysql
を潰してsqlite
にしてもよい. このときsqlite
のファイルは初期設定だとdatabase/database.sqlite
に生成される.
(sail up
でdocker
を立ち上げてから)次のコマンドでデータベースにシードを発行する.
| sail artisan migrate --seed
|
Laravel sailでデータベースのコンテナに入ってMySQL
にログインする
MySQL
コンテナに入る.
| ./vendor/bin/sail exec mysql bash
|
MySQL
に接続する. パスワードは.env
に書いたDB_PASSWORD
の値を入力.
sail
ユーザーがいない場合があるため, その場合はroot
でログインする.
ログインできたらデータベースの存在を確認.
必要に応じてキャッシュをクリアする.
| ./vendor/bin/sail artisan config:clear
./vendor/bin/sail artisan cache:clear
|
Laravel sailの初期設定のMySQL
でsail
ユーザーがいない場合に作成する
docker-compose.yml
で設定を追加する.
1
2
3
4
5
6
7
8
9
10
11
12
13 | mysql:
image: 'mysql/mysql-server:8.0'
ports:
- '${FORWARD_DB_PORT:-3306}:3306'
environment:
MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}'
MYSQL_DATABASE: '${DB_DATABASE}'
MYSQL_USER: '${DB_USERNAME}'
MYSQL_PASSWORD: '${DB_PASSWORD}'
volumes:
- 'sail-mysql:/var/lib/mysql'
- './vendor/laravel/sail/database/mysql/create-testing-database.sh:/docker-entrypoint-initdb.d/10-create-testing-database.sh'
- './mysql-init:/docker-entrypoint-initdb.d' # これを追加
|
上記追加に合わせてディレクトリ・ファイルを追加する.
| mkdir mysql-init
touch create-sail-user.sql
|
create-sail-user.sql
に次の内容を書き込む.
| CREATE USER IF NOT EXISTS 'sail'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'sail'@'%';
FLUSH PRIVILEGES;
|
コンテナを再構築して起動する.
| sail down --rmi all -v
sail up -d
|
ユーザーsail
でログインできるか確認する.
必要に応じて次のSQL
を実行する.
| SELECT user, host FROM mysql.user;
SELECT user, host FROM mysql.user WHERE user = 'sail';
|
OpenAPI
REPL(tinker)
| php artisan tinker
$user = App\Models\User::where("id", "=", "3500")->get();
$orders = App\Models\OrderHeader::where("id", "<", "3500")->get();
|
起動
| mysql.server start
php artisan serve
|
既にあるプロジェクトの導入
| composer install
php artisan migrate
php artisan key:generate
php artisan serve # 起動
|
開発環境ではhttp, 本番ではhttpsで接続
- 参考
- app/Providers/AppServiceProvider.phpを編集
| use Illuminate\Support\Facades\URL;
public function boot()
{
if (config('app.env') === 'production') {
\URL::forceScheme('https');
}
}
|
マイグレーション
ユーザー作成
php artisan tinker
を実行 - REPLで次のように書く
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 | $user = new User;
$user->name = "ユーザー名";
$user->email = "メールアドレス";
$user->password = Hash::make('パスワード');
$user->save();
$user = new User;
$user->name = "test";
$user->email = "test@phasetr.com"; # このメールアドレスは存在しない
$user->password = Hash::make('test');
$user->save();
$user = new User;$user->name = "user";$user->email = "user@phasetr.com";$user->password = Hash::make('test');$user->save();
$user = new User;$user->name = "admin";$user->email = "admin@phasetr.com";$user->password = Hash::make('test');$user->save();
$user = new User;$user->name = "shopper";$user->email = "shopper@phasetr.com";$user->password = Hash::make('test');$user->save();
|
| App\Models\User::first();
|
認証