PHP/Laravel 環境構築初期やgit clone直後でエラーが出たときに読むべし
Laravel環境構築から
.envファイルが必要
APP_NAME=Laravel APP_ENV=local APP_KEY=base64:r2........CcyhuNN/ipAFwze6bfnjfyQjz8Iv8= APP_DEBUG=true APP_URL=http://localhost LOG_CHANNEL=stack DB_CONNECTION=sqlite BROADCAST_DRIVER=log CACHE_DRIVER=file QUEUE_CONNECTION=sync SESSION_DRIVER=file SESSION_LIFETIME=120 REDIS_HOST=127.0.0.1 REDIS_PASSWORD=null REDIS_PORT=6379
コマンド
composer install cp .env.example .env php artisan key:generate
php artisan key:generateは何をしているのか?
暗号化の際に利用している
アプリケーションキーにランダムな文字列を設定することです キーは.env環境ファイルに設定されます。 アプリケーションキーが設定されていなければ、 ユーザーセッションや他の暗号化済みデーターは安全ではありません!
DBをsqliteにする
まずdatabase.sqliteファイルを作成
touch database/database.sqlite
.envのDBをsqliteに変更
DB_CONNECTION=sqlite //user, password等は削除かコメントアウト
マイグレーション
php artisan migrate sudo apt install php-pdo
php-pdoとは
PHPで、DBとの間を取り持つもの
ざっくりいうとこんなイメージです。 RailsもActiveRecordというものを使ってDBを操作します。 Swiftも標準ではcoredataを利用して sqliteを利用します。 DBは文字コードやSQL文も微妙に違います。 それらの差分を吸収するためのものです。 DBが変更になっても、プログラマはコードを変更することがありません。
参考
$dbh = new PDO( 'DSN', 'ユーザー名', 'パスワード', array( 変更したい属性 => 値, 変更したい属性 => 値, ) );
could not find driverとエラー
原因 config がキャッシュを持っている
php artisan tinkerが便利
//現在を確認 shellにログインする php artisan tinker >>> config('database') => [ "default" => "sqlite", "connections" => [ "sqlite" => [ "driver" => "sqlite", "url" => null, "database" => "/home/ubuntu/environment/N-RET/database/database.sqlite", "prefix" => "", "foreign_key_constraints" => true, ], "mysql" => [ "driver" => "mysql", "url" => null, "host" => "127.0.0.1", "port" => "3306",
ctr + C で抜ける
tinkerの使い方はこちら
php artisan config:clear //php-pdoをインストール sudo apt install php-pdo //エラー php package 'php-sqlite' has no installation candidate //sqlite3もインストール sudo apt install php-sqlite3 //マイグレーション php artisan migrate //サーバー起動 php artisan serve --port=8080 //seedを実行 php artisan db:seed
seedファイルの場所
php artisan storage:link でLaravelでimgを管理
sudo apt-get install php-imagick //pathがおかしかったので <img src="/img//strage.....> php artisan storage:link
インストールされているかどうかは、phpのinfoを見れるようにする
これを表示するようにする
<?php echo phpinfo() ; ?>