Google Cloud Platform (Google App Engine, Compute Engine, BigQuery や Container Engine など)の情報の日本公式ブログ
Docker にメールサーバ導入 Laravel を nginx と MySQL で構築した Docker 環境にメールサーバを追加で構築しました。 結構簡単に導入できるので、手順としてまとめています。 Mailhog とは MailHog はGo言語で書かれているメールサーバで、letter_opener_webと同様にブラウザでメールの内容を確認できるようになります。 また、MailHog 単体でメールサーバーとして立ち上げることができるため、Laravel や Rails に限らずどんな環境でも利用できます。 mailhog/MailHog ちなみに、Laravel の最新バージョン 8 の sail のパッケージで、使用されています。 その他サービスとしてMaildevやMailCatcherがあるが、それらはgemやnpmでインストールしてからじゃないと使えないのがとても面倒..
Laravelにはどこにログを出力するかを設定する機能があります。 今回は基本的なログ出力設定について解説します。 解説 まず、デフォルトの設定では、ログファイルは以下に出力されるようになっています。 storage/logs/laravel.logShellScript 上記のログにはエラーに関するログやデバック等で仕込んだログの内容が出力されます。 上記のログが出力されるようになっている理由としては、config/logging.phpで出力するログファイルの場所と種類を設定しているためです。 以下はlogging.phpのデフォルトの設定の一部です。 [config/logging.php] 'default' => env('LOG_CHANNEL', 'stack'), ... 'deprecations' => [ 'channel' => env('LOG_DEPRECATI
はじめに この記事を読むと、Laravel のログにクラス名、ファイル名、メソッド名、行番号を出力できるようになります。 ログのフォーマットや時刻のフォーマットは config ファイル(logging.php)で定義します。 バージョン情報 PHP: 8.2.4 laravel/framework: 10.3.3 実装 handler を追加する ログファイルを日毎にローテーションする RotatingFileHandler をカスタマイズします。 プロセッサを追加したい場合はこのクラスをカスタマイズしてください。 <?php namespace App\Logging; use Monolog\Handler\RotatingFileHandler; use Monolog\Level; use Monolog\Processor\IntrospectionProcessor; cla
バージョン Laravel 5.7 概要 Laravelのログ機能を拡張して、UTCとJSTの時刻、IPアドレス、呼び出し元クラス名・メソッド名、 ユーザーIDを出力する。 なお、PHP側のタイムゾーンはUTCとする。 Laravelは5.6からログ出力方法が変わったのでそれ以前のバージョンの場合はここをコピペでは使えないかも。 コード ■config\logging.php 今回はdailyに対してログの設定をする 'channels' => [ 'stack' => [ 'driver' => 'stack', 'channels' => 'daily', ], 'daily' => [ 'driver' => 'daily', // tapに拡張クラスを指定する 'tap' => [App\Logging\CustomizeFormatter::class], 'path' => s
Rails&pumaで、開発と本番の両方の環境でSSL化をしたくなることがあると思います。 私の場合、ローカルは自己証明書、本番は認証局で登録されている正式な証明書を使いSSL化をしようかなと考えていました。そのためにはNginxのconfファイルに記載する各証明書のパスは開発と本番では別になるため、その部分だけ環境変数で使い分けをしようということになりました。 その時に行った実装手順をメモします。 前提 やり方は、環境変数名を記載したファイルから、環境変数に代入した値に変換されたファイルを生成するenvsubstというコマンドを使用します。 実装手順 環境変数は${SSL_CERTIFICATE_PATH}のように記述する。 ※下記のファイルでは、${SSL_CERTIFICATE_PATH}と${SSL_CERTIFICATE_KEY_PATH}の2つを記述しています。 upstrea
売れるネットショップ研究所 橋本技研の技術系備忘録ブログ。 ショッピングカートシステムの制作などが得意です。 DockerのPHPコンテナからメールを送信しようと思ったら、エラーが出て送信できなかったので、メールの送信機能を追加しました。 PHPMailerを使用してSMTPで送信すれば良い話なのですが、気軽にPHPからmailコマンドで送信したかったのです。 今回のコンテナの仕様は、こんな感じです。 Alpine3.8PHP7.2nkfPDOでMySQLに接続s3にPHPから接続 このコンテナに、sSMTPを追加して、以下のようなDockerファイルに仕上げました。 ※このコンテナはコマンドラインで使うものですので、php7-fpm や php7-opcache は入れていません。 FROM alpine:3.8 MAINTAINER Takashi Hashimoto <hashimo
依存パッケージの更新Updating Dependencies[#updating-dependencies] 最低安定度の更新Updating Minimum Stability[#updating-minimum-stability] データベース構文Database Expressions[#database-expressions] モデルの"Dates"プロパティModel "Dates" Property[#model-dates-property] Monolog3Monolog 3[#monolog-3] RedisキャッシュタグRedis Cache Tags[#redis-cache-tags] サービスのモックService Mocking[#service-mocking] 言語ディレクトリThe Language Directory[#language-direc
年に一度の恒例行事化しつつあります。 普段使っているテンプレのプロジェクトをLaravel10から11へアップグレードしたので手順を残します。 手順はだいたい9から10の時と同じ。 PHPのバージョンは8.2.4で実施。 composer.jsonを書き換えて、依存性のエラーが出るもののバージョンを上げたり、パッケージを差し替えます。 "require": { - "php": "^8.1", + "php": "^8.2", - "aws/aws-sdk-php-laravel": "^3.7", + "aws/aws-sdk-php-laravel": "^3.9", - "davejamesmiller/laravel-breadcrumbs": "^5.3", + "diglactic/laravel-breadcrumbs": "^9.0", "doctrine/dbal": "
Kawara Printmaking Laboratory, Inc. / Kanda & Oliveira / SCAI THE BATHHOUSE / CASHI / 麻田弦 / 安藤裕美 金子光晴+中林忠良 猪熊弦一郎 瀧口修造 ハンス・エルニー 堀内正和 古沢岩美 桂ゆき 篠田桃紅 駒井哲郎 吉田穂高 丹阿弥丹波子 パウル・ヴンダーリッヒ オットー・ピーネ ホルスト・ヤンセン 靉嘔 R.B.キタイ 佐野ぬい 宇野亞喜良 中西夏之 ロルフ・エッシャー 山野辺義雄 アリギエロ・ボエッティ 櫃田伸也 井田照一 アカイ・フジオ 萩原朔美 安東菜々 浜村博司 河嶋淳司 タイトル「エキシビション メーカー」は、1990年、ワタリウム美術館の初めての美術展をキュレートしてくれたハラルド・ゼーマンが、当時はキュレーターという言葉は世界でも使われておらず、「展覧会を作る人」というこの言葉を使っていた
OpenFGAは、ファイングレインド・アクセス・コントロール(Fine-Grained Access Control、FGAC)を実現するためのオープンソースの認可システムです。このシステムは、複雑なアクセス制御ポリシーを柔軟にモデリングし、アプリケーションやサービスに統合することを可能にします。 Fine-Grained Access Controlについてはこちらの記事がわかりやすかったので、参考にしてみてください。 さて今回の記事は、OpenFGA公式ドキュメントのモデリングガイドを読み解いていきます。 元のドキュメントは英語で書かれており日本語に翻訳してみたのですが、インラインコードまで翻訳してしまい、認可の構造を理解する上で重要な部分がわかりづらくなってしまいました。 そこで、この記事では英語の情報を日本語でシンプルにまとめつつ、参考コードを多めでお送りします。 では、はじめます
はい、今回はgetで取得したパラメーターをFormRequestクラスを使ってバリデーションをかける方法を共有します。 基本的なFormRequestを利用したバリデーションは以下を確認ください。 結構調べてもよくわからんかったんですが、stack overflowで回答されている方がいたのでそちらの記事と、 Laravelの公式の情報を確認しながら紹介していきます。 簡単に概要だけ説明すると、以下のようなURLから取得したパラメータ(id)がバリデーションできないのです。 Route::get('hoge/{id}', [testController::class, '対象コントローラーのメソッド名']);Code language: PHP (php) 伝えたいこと 今回はタイトルそのままで、getで取得したパラメーターをどうやってバリデーションかけていくのかを紹介します。 なので、今
最近laravel(Laravel8)のサービスプロパイダの存在を知ったのですがそのときにハマった話、自分が行った解決策を紹介したいと思います。 最終的には自分がしたかったことをでき、問題の解決ができていますが間違い、更なる改善ができるような箇所があれば指摘いただけると幸いです。 状況状況としてサービスプロパイダで呼び出したクラスでユーザー情報を扱った処理を行おうとしていました。サービスプロパイダ内ではそのクラスをそのクラスのインターフェースとbind関数を使って紐づけており $this->app->bind(\App\Service\UserServiceInterface::class, \App\Service\Production\UserService::class);コントローラーではメソッドインジェクションを行って使用していました。 public function index
<?php namespace App\Http\Controllers; use App\Repositories\NoteRepository; class HelloController extends Controller { /** * NoteRepositoryの実装 * * @var NoteRepository */ private $notes; public function __construct(NoteRepository $notes) { $this->notes = $notes; } public function index() { $note = $this->notes->getNote(1); return view('index', compact('note')); } } これを見ると、HelloController内ではNoteRepos
はじめに この記事は、PHP Advent Calender 2019 の17日目の記事です。 みなさん、Trait使っていますか? 社内でTraitの使い所がいまいち分からないんだよね〜という話が出ていたので、Traitの使われかたを分類し、Laravelの実際のコードを例として理解を深めていけたらと思います。 Traitとは そもそもTraitってどんな機能でしょうか? PHP 5.4.0 以降では、コードを再利用するための「トレイト」という仕組みが導入されました。 トレイトは、PHP のような単一継承言語でコードを再利用するための仕組みのひとつです。 トレイトは、単一継承の制約を減らすために作られたもので、 いくつかのメソッド群を異なるクラス階層にある独立したクラスで再利用できるようにします。 トレイトとクラスを組み合わせた構文は複雑さを軽減させてくれ、 多重継承や Mixin に関
やりたいこと 解決方法 解説 やりたいこと 汎用的なRequestで一旦受け取って、あとからFormRequestを作成するようにすることで、無駄にコントローラやメソッドを生やさなくて済むようにしたい。 例えばAPIなどで、サービスが複数存在しているときに各パラメータを若干カスタマイズしたいときなどに使える。 routes/api.php Route::post('/{serviceName}/apply', 'APIController@somethingAction')->name('apply'); 解決方法 APIController.php /** @var array サービス名とバリデーションに使用するFormRequestの関連付け */ protected $formRequests = [ 'hoge' => 'App\Http\Requests\HogeRequest
DIとは DI(依存性の注入)とは、クラスやメソッド内で使用する機能を外部(具体的にいうと仮引数)から渡す設計パターンです。 機能を外部から渡すことによって、クラスやメソッド同士の依存性を小さくする目的があります。 具体例 今回は、ラジオ番組コントローラー内でコーナを所得する例を考えてみたいと思います。 以下は、ラジオ番組クラスとラジオコントローラーになります。 Annkw.php <?php namespace App\Radios; class Annkw { private $name; private $corner; public function __construct($name = 'annkw', $corner='しんやめ') { $this->name = $name; $this->corner = $corner; } public function getNam
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く