20220115のlaravelに関する記事は12件です。

PHPUnit用テストDB設定方法

PHP Unitでテストを行うためのテスト用DBを導入するまで Laravel開発にてテスト行う際は、PHP UnitというPHP用のユニットテストプログラムが標準で組み込まれており、テストコードを記述するとテストを実行してくれるとのこと。 早速PHP Unitにてテスト実行するためのテスト用DBを作成・設定したのでまとめます。 手順概要 MySQLにてテスト用DBを作成 config/database.php変更 .env.testing作成 phpunit.xml変更 手順詳細 MySQLにてテスト用DB作成 mysqlに接続し、以下コマンドでテスト用DBを作成 create database TestDababase; config/database.php変更 laravelプロジェクト内のconfigフォルダ下にあるdatabase.phpに使用するDB定義を追加します。 connections配列の中にあるmysqlの内容を丸々コピーして複製。 キーの名称をmysqlからテスト用のDB定義名称に変更。 database.php // その他設定項目省略 'connections' => [           // ↓mysqlからテスト用名称に変更 'test_laravel' => [ 'driver' => 'mysql', 'url' => env('DATABASE_URL'), 'host' => env('DB_HOST', '127.0.0.1'), 'port' => env('DB_PORT', '3306'), 'database' => env('DB_DATABASE', 'forge'), 'username' => env('DB_USERNAME', 'forge'), 'password' => env('DB_PASSWORD', ''), 'unix_socket' => env('DB_SOCKET', ''), 'charset' => 'utf8mb4', 'collation' => 'utf8mb4_unicode_ci', 'prefix' => '', 'prefix_indexes' => true, 'strict' => true, 'engine' => null, 'options' => extension_loaded('pdo_mysql') ? array_filter([ PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), ]) : [], ], ], .env.testingを作成 Laravelプロジェクトフォルダ直下にある「.env」をコピーし、「.env.testing」に変更。 変更箇所は以下の4箇所です。 「APP_ENV」 :任意の名称 「DB_CONNECTION」 :database.php内に定義したテスト用DB定義名称 「DB_DATABASE」 :1つ目の手順で作成したTestDBの名称を入力。 「APP_Key」 :次手順のコマンドで自動で入力されるため空欄にしておきます。 .env.testing APP_ENV= test_laravel APP_KEY= (空に設定) DB_DATABASE= test_laravel DB_DATABASE= TestDatabase config内容を変更しているので、一旦configキャッシュをクリア terminal php artisan config:clear test用App_Keyを作成するため以下のコマンドでキーを作成 このコマンドで.env.testing内のAPP_KEYに値が入力されます。 terminal php artisan key:generate --env=testing 上記手順完了したらテスト用DBをmigrate。 terminal php artisan migrate --env=testing これでTest用に作成したDB内にテーブルが作成されます。 phpunit.xmlを変更 最後にプロジェクト直下にある「phpunit.xml」の内容を変更します。 「DB_CONNECTION」の値に、database.php内に定義したテスト用DB定義名称を記入。 phpunit.xml <server name="APP_ENV" value="testing"/> <server name="BCRYPT_ROUNDS" value="4"/> <server name="CACHE_DRIVER" value="array"/> <server name="MAIL_DRIVER" value="array"/> <server name="QUEUE_CONNECTION" value="sync"/> <server name="SESSION_DRIVER" value="array"/> <server name="DB_CONNECTION" value="test_laravel"/> ここまでできたらphpunitを動かし、正常にテストが実行されていれば設定完了です。 備考 .envと.env.testingの切り替えの仕組みが気になったので調べてみたところ phpunit.xmlの内容のAPP_ENVのvalueの内容を読み取り、「.env.{{APP_ENV}}」のファイルを環境変数設定ファイルとして読み込みに行くとのこと。 phpunit.xml <server name="APP_ENV" value="testing"/> 試しに以下コードをテストコード内に記述してキーの名称を色々変えてみると設定ファイルとして.env.testingを読み込んでいることがわかります。 testExample.php dd(env('APP_ENV'), env('DB_HOST')); Laravelは設定ファイルをキャッシュしているため、DBを扱うテストコードを実行する前に php artisan config:clear を実行した方がいいとのこと。 設定変えてもddで反映されない場合はconfigをクリアするとうまく行くかと思います。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

LaravelとAmazon SES を使ってメールを送ろう!

はじめに タイトルの通り、とても簡単にLaravelとAmazon SESを使ってメールを送ることができます。 記事自体は長いのですが作業自体は特に難しくありません。 Laravel使ってメールを送りたいと考えている方(そうでない方も笑)、ぜひ記事に目を通していってください! 著者の環境 Laravel 8.78.1 PHP 8.0.8 本記事の概要 ゴール アプリから以下のようなメールが送信できることを目標にしていきます。 項目 説明 from mail@test-ses.tk fromの表示名 アプリ名 to アプリにて指定した宛先 やること メールを送信するために以下のステップを踏んでいきます。 もしご自身にとって不要なステップがあったら飛ばしてください。 IAMユーザーの作成 SESの設定 独自ドメインの取得 SESの設定 サンドボックス外への移動 Laravelの設定 IAMユーザーの作成 LaravelからSESにメールの送信リクエストをするには、認証のためにIAMユーザーが必要です。 (最終的に.envにIAMユーザーのアクセスキーやシークレットアクセスキーを記入します) そのため、まずはIAMユーザーを作成しましょう。 今回は以下のようなポリシーを作成し、このポリシーを直接IAMユーザーにアタッチしました(直接IAMユーザーにポリシーアタッチするのは良くないのですが、テストなので許してください笑) 作成したポリシー { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "ses:SendEmail", "ses:SendRawEmail" ], "Resource": "*" } ] } 補足 アクセスキーとシークレットアクセスキーを確認する方法 IAMユーザーのユーザーページから認証情報タブをクリックします。 アクセスキーの作成をクリックすると、アクセスキーとシークレットアクセスキーが確認できます。 SESの設定 SESを利用するには、送信するためのドメイン又はメールアドレスが必要になります。 今回は送信元にドメインを指定します。 以下独自ドメインの取得についても記載していますが、取得済みの方は読み飛ばしてください。 独自ドメインの取得 今回はfreeenomというサービスを用いて無料でドメインを取得しました。 freenomへの登録を済ませたらヘッダーにあるServices内のRegister New Domainをクリックします。 好きなドメインのところでGet it nowを押します。そうすると、selectedに表示が切り替わります(今回はtest-ses.tkを選択しました)。 その後は完了画面になるまで、continue等を押していきます(完了画面は注文番号が出てくる画面です) ※ 途中にドメインを取得する期間を設定する場所があるので、その部分はご自身の希望の期間を設定してください。デフォルトは3ヶ月です。 これで独自ドメインの取得は以上になります。 しかしこのままではSESで色々ドメインの設定をした時に、freenomで管理をしなければならず結構面倒です。 そのためRoute53に管理を委任していきます。 まずはRoute53にて、先ほど取得した独自ドメインのホストゾーンを作成します。 そうしたら4つのNSレコードが作成されます(SOAレコードも作成されますが、今回はNSレコードのみ使用します)。 それではfreenomeにてRoute53のNSレコードを登録していきましょう。 freenomのヘッダーにあるServices内のMy Domainsをクリックします。 その後、自身のドメインのManage Domainというボタンを押下し、出てきた画面のNameserversをクリックします 先ほどRoute53のNSレコードに記載してあったものを記入していきます。 完了したらdigコマンドにてroute53のNSレコードが出てくるか確認しましょう。 ※直ぐには反映されないこともあります。 $ dig NS test-ses.tk +short ns-1347.awsdns-40.org. ns-14.awsdns-01.com. ns-1629.awsdns-11.co.uk. ns-823.awsdns-38.net. これで独自ドメインの設定は完了です。 それではSESの設定をしていきましょう。 SESの設定 SESのコンソール画面にいったらCreate identityというボタンを押します。 まずは、送信するドメインを設定します。 次にDKIMの設定をしていきます。今回はSESにて簡単に設定できるEasyDKIMを選択しました。 Route53を見ると、設定したDKIMのCNAMEレコードが追記されています(画像の3つのレコード全てがDKIMのドメインです)。 【補足】DKIM(DomainKeys Identified Mail)について メールの電子署名を用いた不正防止の仕組みです。送信者はメールに電子署名を行います。受信側はメールのドメイン検証メールの電子署名を利用した不正メール防止のことです。メール送信者は送信メールに電子署名を行い、メール受信者がドメインが正式なものかを問い合わせて不正を防止しています。 サンドボックス外への移動 SESはデフォルトの状態で Amazon SES サンドボックスに配置されます。 これにより以下のような制限がかかってしまいます。 SESに登録したメールアドレス(ドメイン)からしかメールを送信することができない 最大で 24 時間あたり 200 メッセージ 最大で 1 秒あたり 1 メッセージを送信できます どのアドレスへもメールを問題なく送信したい場合、Amazon SES サンドボックスから削除されるようにリクエストする必要があります。 SESのTopページからRequest production accessというボタンを押します 各種必要な情報を入力して、Requestを送信します。 これでSESの設定は完了です。 次にLaravelの方の設定をしていきましょう。 Laravelの設定 各種準備 まずはライブラリをインストールします。 $ composer require aws/aws-sdk-php 次に.envファイルを編集していきます。 使用するメーラーやIAMの情報を記入していきましょう。 .env MAIL_MAILER=ses MAIL_FROM_ADDRESS=mail@test-ses.tk # @より前は好きな文字を記入し、@の後はSESにて設定したドメインを設定します。 MAIL_FROM_NAME="${APP_NAME}" #FROMの表示名をアプリ名以外にしたい場合は、書き換えてください。 # 作成したIAMユーザーのアクセスキーを記入する AWS_ACCESS_KEY_ID=この部分はIAMのアクセスキーを記入してください。 AWS_SECRET_ACCESS_KEY=この部分はIAMのシークレットアクセスキーを記入してください AWS_DEFAULT_REGION=ap-northeast-1 #東京リージョンではない場合は書き換えてください。 config/mail.phpの変更 ※ 基本的に.envの設定値が適用されるので、第2引数は書き換えなくても動作しますが念の為設定しておきます。 config/mail.php 'default' => env('MAIL_MAILER', 'ses'), 'from' => [ 'address' => env('MAIL_FROM_ADDRESS', 'hiroaki-u@hiroaki-u.tk'), 'name' => env('MAIL_FROM_NAME', 'Test'), ], config/services.php ※ 基本的に.envの設定値が適用されるので、第2引数は書き換えなくても動作しますが念の為設定しておきます。 ```php:config/services.php return [ // 中略 'ses' => [ 'key' => env('AWS_ACCESS_KEY_ID'), 'secret' => env('AWS_SECRET_ACCESS_KEY'), 'region' => env('AWS_DEFAULT_REGION', 'ap-northeast-1'), ], ]; ``` 実装 LaravelではMailファサードを使ってMailを送ることが出来ます。 Mailファサードのみでも送信することはできるのですが、メールの文面等はMailableクラスを用いると楽に実装できるので、今回はMailableクラスを用いようと思います。 Mailableの生成 bash $ php artisan make:mail TestMail 上記のartisanコマンドを打つと、app/Mail/TestMail.phpが作成されます。 メールの文面にDBのデータが必要な場合は、メンバー変数にModelを持ってきて、コンストラクタにModelをDIする必要があります。 今回はUserのデータを使用すると仮定します。 MailTest.php <?php namespace App\Mail; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Mail\Mailable; use Illuminate\Queue\SerializesModels; use App\Models\User; class MailTest extends Mailable { use Queueable, SerializesModels; public $user; /** * Create a new message instance. * * @return void */ public function __construct(User $user) { $this->user = $user; } /** * Build the message. * * @return $this */ // subjectメソッドでメールのタイトルを設定 // viewメソッドでメールの本文が書いてあるbladeを指定 public function build() { return $this ->subject('メールの題名') ->view('emails.test_content'); } } メールの内容を実装 resources/views内にemails/test_content.blade.phpを作成します。 $ mkdir -p resources/views/emails && touch ./resources/views/emails/test_content.blade.php メールの文面を書いていきます。 今回は『[ユーザー名]さんへのメール』という文面を記載しています。 test_content.blade.php <body> <p>{{ $user->name }}さんへのメール</p> </body> メールの送信処理の実装 Mailファサードを用いてtoメソッドにより送信先を設定し、sendメソッドによりMailableのインスタンスを引数にします。 この処理でメールを送ることが出来ます。 TestController.php use App\Mail\MailTest; use Illuminate\Support\Facades\Mail; class TestController extends Controller { public function index() { $mail_address = [自分が送りたい宛先]; Mail::to($mail_address)->send(new MailTest($review,$user)); } } これで以上となります! 最後まで読んでくださりありがとうございました。 参考記事 Laravelメール送信(公式) SESの送信概要(公式) Amazon SES でメール送信するときのベストプラクティスまとめ SESのIAMポリシー設定 SESのサンドボックス制限
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

禁忌教典 第2章 ~✧夜に靡くカロマージュ✧~ tinker&controllerを添えて

✧Tinker編✧ Tinker・・データベースと接続をする時に、役に立つ機能 対話型(コードを打つと、返ってくる形)で、cmdにコードを打って、その返事が返ってくるのが、対話に似ているというのが由来である。 Tinkerの呼び出し方 php artisan tinker この文を、CMDで打つことにより呼びだす事が出来る。 インスタンス化・・クラス(設計図)からインスタンス(実際に作ったもの)を作る行為 new・・インスタンス化する事(インスタンス化する=newする) tinkerの使い方は、下記図を持って説明する ❕❕変数、$testに、modelsの中にあるTestを代入❕❕ >>> $test = new App\models\Test; => App\Models\Test {#3354} ❕❕$testの、textカラムに、aaaを入れる❕❕ >>> $test->text = "aaa"; => "aaa" ❕❕先ほど打ったaaaを、保存する❕❕ >>> $test->save(); => true ❕❕:all()と打つことで、中に入っているものを全て表示する。❕❕ >>> App\Models\Test::all(); => Illuminate\Database\Eloquent\Collection {#4079 all: [ App\Models\Test {#4078 id: 1, text: "aaa", created_at: "2022-01-15 11:13:03", updated_at: "2022-01-15 11:13:03", }, ], } これにより、DBのtestの中身には、先ほど打ったaaaが格納されている。 ✧コントローラ編✧ Controllerの作り方 cmdで、、、 php artisan make:controller ファイル名 //ファイル名は、わかりやすくするために、ファイル名controllerといった形にするのが一般的
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

禁忌教典 第2章 ~✧夜に靡くカロマージュ✧~ tinker&ctrを添えて

はじめに ・私自ら執筆した文である故、ありがたみを持って拝見するように ・私に対する感謝の気持ちを伝えたい場合は、コメント欄で伝えるように ・以上二つの事を、しっかりと守りましょう ✧Tinker編✧ Tinker・・データベースと接続をする時に、役に立つ機能 対話型(コードを打つと、返ってくる形)で、cmdにコードを打って、その返事が返ってくるのが、対話に似ているというのが由来である。 Tinkerの呼び出し方 php artisan tinker この文を、CMDで打つことにより呼びだす事が出来る。 インスタンス化・・クラス(設計図)からインスタンス(実際に作ったもの)を作る行為 new・・インスタンス化する事(インスタンス化する=newする) tinkerの使い方は、下記図を持って説明する ❕❕変数、$testに、modelsの中にあるTestを代入❕❕ >>> $test = new App\models\Test; => App\Models\Test {#3354} ❕❕$testの、textカラムに、aaaを入れる❕❕ >>> $test->text = "aaa"; => "aaa" ❕❕先ほど打ったaaaを、保存する❕❕ >>> $test->save(); => true ❕❕:all()と打つことで、中に入っているものを全て表示する。❕❕ >>> App\Models\Test::all(); => Illuminate\Database\Eloquent\Collection {#4079 all: [ App\Models\Test {#4078 id: 1, text: "aaa", created_at: "2022-01-15 11:13:03", updated_at: "2022-01-15 11:13:03", }, ], } これにより、DBのtestの中身には、先ほど打ったaaaが格納されている。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Laravel編 第2章 ~tinker&controllerについて~

✧Tinker編✧ Tinker・・データベースと接続をする時に、役に立つ機能 対話型(コードを打つと、返ってくる形)で、cmdにコードを打って、その返事が返ってくるのが、対話に似ているというのが由来である。 Tinkerの呼び出し方 php artisan tinker この文を、CMDで打つことにより呼びだす事が出来る。 インスタンス化・・クラス(設計図)からインスタンス(実際に作ったもの)を作る行為 new・・インスタンス化する事(インスタンス化する=newする) tinkerの使い方は、下記図を持って説明する ❕❕変数、$testに、modelsの中にあるTestを代入❕❕ >>> $test = new App\models\Test; => App\Models\Test {#3354} ❕❕$testの、textカラムに、aaaを入れる❕❕ >>> $test->text = "aaa"; => "aaa" ❕❕先ほど打ったaaaを、保存する❕❕ >>> $test->save(); => true ❕❕:all()と打つことで、中に入っているものを全て表示する。❕❕ >>> App\Models\Test::all(); => Illuminate\Database\Eloquent\Collection {#4079 all: [ App\Models\Test {#4078 id: 1, text: "aaa", created_at: "2022-01-15 11:13:03", updated_at: "2022-01-15 11:13:03", }, ], } これにより、DBのtestの中身には、先ほど打ったaaaが格納されている。 ✧コントローラ編✧ Controllerの作り方 cmdで、、、 php artisan make:controller ファイル名 //ファイル名は、わかりやすくするために、ファイル名controllerといった形にするのが一般的
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Laravel ~tinker&controllerについて~

✧Tinker編✧ Tinker・・データベースと接続をする時に、役に立つ機能 対話型(コードを打つと、返ってくる形)で、cmdにコードを打って、その返事が返ってくるのが、対話に似ているというのが由来である。 Tinkerの呼び出し方 php artisan tinker この文を、CMDで打つことにより呼びだす事が出来る。 インスタンス化・・クラス(設計図)からインスタンス(実際に作ったもの)を作る行為 new・・インスタンス化する事(インスタンス化する=newする) tinkerの使い方は、下記図を持って説明する ❕❕変数、$testに、modelsの中にあるTestを代入❕❕ >>> $test = new App\models\Test; => App\Models\Test {#3354} ❕❕$testの、textカラムに、aaaを入れる❕❕ >>> $test->text = "aaa"; => "aaa" ❕❕先ほど打ったaaaを、保存する❕❕ >>> $test->save(); => true ❕❕:all()と打つことで、中に入っているものを全て表示する。❕❕ >>> App\Models\Test::all(); => Illuminate\Database\Eloquent\Collection {#4079 all: [ App\Models\Test {#4078 id: 1, text: "aaa", created_at: "2022-01-15 11:13:03", updated_at: "2022-01-15 11:13:03", }, ], } これにより、DBのtestの中身には、先ほど打ったaaaが格納されている。 ✧コントローラ編✧ Controllerの作り方 cmdで、、、 php artisan make:controller ファイル名 //ファイル名は、わかりやすくするために、ファイル名controllerといった形にするのが一般的
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

第1章 Migration & Model ~✧月は無慈悲な夜の女王✧~

はじめに ・私自ら執筆した文である故、ありがたみを持って拝見するように ・私に対する感謝の気持ちを伝えたい場合は、コメント欄で伝えるように ・以上二つの事を、しっかりと守りましょう ✧Model編✧ DBとのやり取りをPHPで書ける。(ORM/ORマッパ―という仕組みを使っている) Modelの作り方 php artisan make:model ファイル名 この書き方は、appフォルダの直下にファイルが出来る事により、見ずらくなるので、 ✧Migration編✧ DBテーブルの履歴を管理する仕組み DBに新しいテーブルを作ったり、列やカラムを追加する事が出来る。 また、作ったテーブルや付属品の削除を行う事も可能だ。 ✧テーブルの作り方✧ php artisanコマンドを使う。 注意点としては、テーブル名の最後にsを付けて複数形にする事。 テーブルの作り方 php artisan make:migration create_テーブル名s_table
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

禁忌教典 第1章 Migration & Model ~✧月は無慈悲な夜の女王✧~

はじめに ・私自ら執筆した文である故、ありがたみを持って拝見するように ・私に対する感謝の気持ちを伝えたい場合は、コメント欄で伝えるように ・以上二つの事を、しっかりと守りましょう ✧Model編✧ DBとのやり取りをPHPで書ける。(ORM/ORマッパ―という仕組みを使っている) Modelの作り方 php artisan make:model ファイル名 この書き方は、appフォルダの直下にファイルが出来る事により、見ずらくなるので、 php artisan make:model models/ファイル名 という風に書くことで、appフォルダの中にmodelsという名前のフォルダが出来て、その中にファイルが収納される仕組みが良く取られている。 ✧Migration編✧ DBテーブルの履歴を管理する仕組み DBに新しいテーブルを作ったり、列やカラムを追加する事が出来る。 また、作ったテーブルや付属品の削除を行う事も可能だ。 ✧テーブルの作り方✧ php artisanコマンドを使う。 注意点としては、テーブル名の最後にsを付けて複数形にする事。 テーブルの作り方 php artisan make:migration create_テーブル名s_table Migrationの場所は、Databaseフォルダの中にある。 テーブルのカラムや列を作る事が出来て、カラムの種類を選択できるコマンドなどがある。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

禁忌教典 第1章 ~✧月は無慈悲な夜の女王✧~  Migration & Modelを添えて

✧Model編✧ DBとのやり取りをPHPで書ける。(ORM/ORマッパ―という仕組みを使っている) Modelの作り方 php artisan make:model ファイル名 この書き方は、appフォルダの直下にファイルが出来る事により、見ずらくなるので、 php artisan make:model models/ファイル名 という風に書くことで、appフォルダの中にmodelsという名前のフォルダが出来て、その中にファイルが収納される仕組みが良く取られている。 ✧Migration編✧ DBテーブルの履歴を管理する仕組み DBに新しいテーブルを作ったり、列やカラムを追加する事が出来る。 また、作ったテーブルや付属品の削除を行う事も可能だ。 ✧テーブルの作り方✧ php artisanコマンドを使う。 注意点としては、テーブル名の最後にsを付けて複数形にする事。 テーブルの作り方 php artisan make:migration create_テーブル名s_table Migrationの場所は、Databaseフォルダの中にある。 テーブルのカラムや列を作る事が出来て、カラムの種類を選択できるコマンドなどがある。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Laravel編 第1章 ~Migration & Modelの解説~

✧Model編✧ DBとのやり取りをPHPで書ける。(ORM/ORマッパ―という仕組みを使っている) Modelの作り方 php artisan make:model ファイル名 この書き方は、appフォルダの直下にファイルが出来る事により、見ずらくなるので、 php artisan make:model models/ファイル名 という風に書くことで、appフォルダの中にmodelsという名前のフォルダが出来て、その中にファイルが収納される仕組みが良く取られている。 ✧Migration編✧ DBテーブルの履歴を管理する仕組み DBに新しいテーブルを作ったり、列やカラムを追加する事が出来る。 また、作ったテーブルや付属品の削除を行う事も可能だ。 ✧テーブルの作り方✧ php artisanコマンドを使う。 注意点としては、テーブル名の最後にsを付けて複数形にする事。 テーブルの作り方 php artisan make:migration create_テーブル名s_table Migrationの場所は、Databaseフォルダの中にある。 テーブルのカラムや列を作る事が出来て、カラムの種類を選択できるコマンドなどがある。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Laravel ~Migration & Modelの解説~

✧Model編✧ DBとのやり取りをPHPで書ける。(ORM/ORマッパ―という仕組みを使っている) Modelの作り方 php artisan make:model ファイル名 この書き方は、appフォルダの直下にファイルが出来る事により、見ずらくなるので、 php artisan make:model models/ファイル名 という風に書くことで、appフォルダの中にmodelsという名前のフォルダが出来て、その中にファイルが収納される仕組みが良く取られている。 ✧Migration編✧ DBテーブルの履歴を管理する仕組み DBに新しいテーブルを作ったり、列やカラムを追加する事が出来る。 また、作ったテーブルや付属品の削除を行う事も可能だ。 ✧テーブルの作り方✧ php artisanコマンドを使う。 注意点としては、テーブル名の最後にsを付けて複数形にする事。 テーブルの作り方 php artisan make:migration create_テーブル名s_table Migrationの場所は、Databaseフォルダの中にある。 テーブルのカラムや列を作る事が出来て、カラムの種類を選択できるコマンドなどがある。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【Nginx】xxx/xxx.php を任意のURLにリダイレクトさせたときの備忘録

はじめに 特定のパスを指定した場合にnginxでリダイレクトさせる処理を追加した際の備忘録です また、nginx.confの読み方が曖昧だったので以下の記事を参考に整理してみました やり方 以下を追加する /nginx/default.conf location /hoge/index.php { return 301 http://example.com/ } 設定解説 server {}:バーチャル(仮想)サーバの設定を記述 listen 80;:IP番号とポート番号を指定する server_name:サーバ名を指定する root:ドキュメントルートを指定する add_header:カスタムレスポンスヘッダーを追加する。 X-Frame-Options "SAMEORIGIN";:同じドメイン内のみページの表示を許可する X-XSS-Protection "1; mode=block";:XSS攻撃を検知してした際に読み込むことを防止する X-Content-Type-Options "nosniff";:リソースのContent-Typeを無視することがなくなり、HTMLではないものをHTML扱いしてしまうことによるXSSを防ぐ index:indexファイルを指定する charset:レスポンスヘッダのContent-typeを指定する location:パスごと個別のドキュメントルートを設定可能 location /:ルートパスにアクセスされた場合にコンテキスト内の処理を行う try_files: ファイルが存在するかをチェックする $uri $uri/:/hogeというファイル名がない場合 $uri/:./hogeというディレクトリを探す /index.php?$query_string:/index.phpというファイルもなければ内部リダイレクトする location = /favicon.ico { access_log off; log_not_found off; }:faviconへのアクセスはログへの記録オフ error_page 404 /index.php;:404エラーが発生したときに内部リダイレクト /nginx/default.conf server { listen 80; server_name example.com; root /work/public; add_header X-Frame-Options "SAMEORIGIN"; add_header X-XSS-Protection "1; mode=block"; add_header X-Content-Type-Options "nosniff"; index index.php; charset utf-8; location / { try_files $uri $uri/ /index.php?$query_string; } location /hoge/index.php { return 301 http://example.com/ } location = /favicon.ico { access_log off; log_not_found off; } location = /robots.txt { access_log off; log_not_found off; } error_page 404 /index.php; location ~ \.php$ { fastcgi_pass app:9000; fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; include fastcgi_params; } location ~ /\.(?!well-known).* { deny all; } } さいごに 読んでいただきありがとうございます。 いいねしていただけると記事執筆の励みになりますので、参考になったと思った方は是非よろしくお願いします!
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む