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の使い方はこちら

www.larajapan.com

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ファイルの場所

f:id:happy_teeth_ago:20200819145404j:plain

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() ;
   ?>