HerokuでLaravel 6のログをPapertrailに出力する

HerokuにデプロイしたLaravelアプリケーションのログメッセージをHerokuのログシステムに出力して、Papertrailに連携する手順と説明をまとめました。

Laravelのバージョンは、2019年9月時点での最新6.0で確認しています。

LaravelのログをHerokuのログに統合する

PHP Application Logging | Heroku Dev Center」によると、Herokuのログ管理システム(Logplexという)はstdoutおよびstderrに出力されるメッセージをログストリームとして集めます。

heroku logsコマンドで確認できるログメッセージは各Dynoからここに集められたログを見ているわけです。

そこで、Laravelの場合もstrerrにログが出力されるように設定します。
Herokuのドキュメントの「Laravel」に記載されている通り、環境変数LOG_CHANNELerrorlogをセットするだけでOKです。

環境変数LOG_CHANNELerrorlogをセットするコマンドは以下のとおり

$ heroku config:set LOG_CHANNEL=errorlog

“HerokuでLaravel 6のログをPapertrailに出力する” の続きを読む

Laravel Socialite でMicrosoft Graph (Office 365アカウント)認証する

前回の記事 「Laravel 5.8からMicrosoft Graph APIを利用する (公式ドキュメント編)」では、Micsoroft公式のチュートリアル ドキュメントに沿って、LaravelアプリケーションからMicrosoft Graph APIをOAuth認証プロバイダとして利用する手順について確認しました。

このチュートリアルは、OAuthの認証ロジックをleague/oauth2-clientを使って独自に実装していましたが、実際はLaravel公式のOAuth認証パッケージLaravel Socialiteを使いたいところです。

Laravel Socialiteは非常に多くの認証プロバイダーに対応しています。対応プロバイダーは、Socialite Providersで確認できます。
Microsoft Graphについてももちろん対応しています。

この記事では、Laravel Socialiteを利用してAzure ADのアカウントで認証を実装する手順について確認します。
Auth Scaffoldは使わず、つまりデータベース認証は使わずに、OAuth認証後にLaravel標準のAuthユーザとしてログインし、Auth middlewareを使って要認証のルーティングを保護する手順についても説明しています。

この記事に含まないこと

Azure ADに登録されたアカウントによる認証にのみフォーカスして説明しています。
Microsoft Graph APIを利用したデータの取得については説明しません。
よって、アクセストークンの更新についても言及していません。
“Laravel Socialite でMicrosoft Graph (Office 365アカウント)認証する” の続きを読む

Laravel 5.8からMicrosoft Graph APIを利用する (公式ドキュメント編)

LaravelアプリでOffice 365アカウントによるOAuth認証を実装するにあたって、公式ドキュメント PHP アプリで Outlook REST API を使用する方法 – Outlook Developer | Microsoft Docs の手順を確認してみたメモになります。

このブログの以前の記事「Office 365 REST APIを利用したRuby on Railsアプリの作成」でRuby on Rails版の確認をしていますが、そのPHP版になります。

公式ドキュメントでは、チュートリアル形式でAuthorization Code Flowの処理を一つ一つ実装し、詳細に解説していますが、実際には、これらの手順はLaravel Socialiteを利用すると簡単に実装できます。
そこで、この記事では、Azure ADにアプリケーションを登録し、チュートリアル サンプルを手元で動かし、手っ取り早くAzure ADに登録されたアカウントのアクセストークンをLaravelアプリから取得する流れを体感することができるようにまとめてみました。

Azure Active Directory 管理センター

Rails版の記事を書いていたのは2016年でしたが、その後新しいAzure ADの管理ポータル Azure Active Directory 管理センターがリリースされていました。

The new Azure AD Admin Console is GA!

2017年なのですでにだいぶ前ですね。

Azure Active Directory 管理センターには、直接 https://aad.portal.azure.com/ を開くか、Office 365の管理センターでAzure Active Directoryを選択して開くことができます。


“Laravel 5.8からMicrosoft Graph APIを利用する (公式ドキュメント編)” の続きを読む

Laravel 5.8 でのl5scaffoldの動かし方

LaravelにはRailsはCakePHPのようなScaffoldingがありません。
Laravel用のScaffoldパッケージはいくつかありますが、調べてみるとlaralib/l5scaffoldが最もよく使われているようです。
しかし、最後のコミットは2年前くらいで現在メンテナンスされていないようで、2019年8月時点でのLaravelのバージョン5.8では動きません。

最新版のコミットからパッケージをインストールして、1箇所ソールを修正すれば動きますので、対応した手順をまとめておきます。

‘laralib/l5scaffold’をインストール

composerでインストールします。

デフォルトのバージョンは1.0.10ですが、’dev-master’を指定すると、Laravel 5.4でIlluminate\Console\AppNamespaceDetectorTraitの名前がIlluminate\Console\DetectsApplicationNamespaceへ変更された点については対応されています。

$ composer require laralib/l5scaffold:dev-master --dev

Providerを登録

config/app.phpprovidersLaralib\L5scaffold\GeneratorsServiceProvider::classを追加します。

    'providers' => [
        ...
        Laralib\L5scaffold\GeneratorsServiceProvider::class ,
    ],

“Laravel 5.8 でのl5scaffoldの動かし方” の続きを読む

2019版 Laravel Homestead セットアップからhttpsによるアクセス手順まで

4年前の記事 Laravel homesteadを利用したLaravel 5 ローカル開発環境の構築 にLaravel Homesteadのセットアップ手順についてまとめましたが、久しぶりにLaravelを使う機会があったので、まとめ直してみました。

Windowsでもセットアップ可能なようにMacの手順と併記しています。

また今回はhttpsでのアクセスも可能なように、Homesteadから取り出した自己署名の認証局をPCにインストールする手順についてもまとめてみました。

前提条件の準備

VirtualBox 6.xのインストール

HomesteadはVirtualBoxのバージョン6.xに対応しています。
その他 VMWare、Parallels、Hyper-V にも対応しているようです。

ここではVirtualBoxを使います。
ダウンロードページからインストーラを入手してインストールします。 

Vagrantのインストール

Vagrantのダウンロードページからインストーラを入手してインストールします。

gitのインストール (なければ)

gitコマンドがインストールされていない場合(主にWindows)は、https://git-scm.com/downloads がらインストーラをダウンロードしてインストールします。
“2019版 Laravel Homestead セットアップからhttpsによるアクセス手順まで” の続きを読む

Symfony 3 DoctrineMigrationsBundleの使い方

この記事では、DoctrineMigrationsBundleのセットアップ手順と、マイグレーションの作成・適用手順についてまとめてみました。

Symfonyは、デフォルトではマイグレーション機構が含まれていません。
また、doctrine:schema:update --forceコマンドを使ってデータベースにスキーマを反映することができますが、デフォルトではProduction環境で利用できないためマイグレーションを導入したほうが無難です。

Symfonyでマイグレーションを実装するには、DoctrineMigrationsBundle (Github: doctrine/DoctrineMigrationsBundle)を導入します。

インストールと設定

composerでパッケージを追加

$ composer require doctrine/doctrine-migrations-bundle "^1.0"

Bundleの読み込みを追加

// app/AppKernel.php
public function registerBundles()
{
    $bundles = array(
        //...
        new Doctrine\Bundle\MigrationsBundle\DoctrineMigrationsBundle(),
    );
}

“Symfony 3 DoctrineMigrationsBundleの使い方” の続きを読む

Facebook SDK for PHP (facebook/graph-sdk) v5.xのインストールと使い方まとめ

PHP用Facebook SDK v5を利用してFacebookアプリを作成する最小限の手順です。
Github: facebook/php-graph-sdk

以前に書いた記事「Facebook PHPをComposerで利用するには」の内容が、古くなっていたので、改めて試してまとめました。

SDKのインストール

Instllationに従い、facebook/graph-sdkをcomposerでインストール

$ composer require facebook/graph-sdk

facebook/graph-sdkが含まれる以下のcomporser.jsonが生成される

// composer.json
{
  "require" : {
    "facebook/graph-sdk": "^5.6"
  }
}

ログインサンプル

php-graph-sdk/facebook_login.mdのサンプルを実装して動作を確認してみます。
“Facebook SDK for PHP (facebook/graph-sdk) v5.xのインストールと使い方まとめ” の続きを読む

SymfonyでJS、SCSSをWebpack encoreでビルドするには

Symfonyで、JavascriptやCSSなどフロントエンドのアセットを管理する仕組みとして、以前はAsseticが用意されていましたが、Webpackを利用するWebpack Endoreに置き替わり今時な構成になりました。

Laravelで言うところのElixirにあたります。

Webpack Encoreの利用方法については、公式ドキュメント Managing CSS and JavaScript に一通りの使い方が載っています。
また、Symfonyのでもアプリ symfony/symfony-demo が、Webpack Encoreを使った構成になっているので、こちらのソースを読むほうが解りやすいかもしれません。

この記事では、公式ドキュメントの例、First Example を試してみた手順をまとめいます。
公式ドキュメントでは、nodeのパッケージ管理システムにyarnを使っていますが、私は普段まだnpmを使っているので、npmを利用してパッケージをインストールしています。

プロジェクトの構成

symfony/symfony-demo を参考に、以下のようなディレクトリ構成にします
“SymfonyでJS、SCSSをWebpack encoreでビルドするには” の続きを読む

Symfony 3.x FOSRestBundleとJMSSerializerBundleでREST APIを実装する

FOSRestBundleと、シリアライザーとしてJMSSerializerBundleを利用し、SymfonyでREST APIを実装する手順についてまとめました。

FOSRestBundleは、非常に多機能で柔軟な実装が可能ですが、ここではレスポンスフォーマットはjsonのみに対応したシンプルなREST APIを実装する手順について紹介してみます。

バンドルのインストールと読み込み

Step 1: Setting up the bundleに従って以下の手順でインストールします

friendsofsymfony/rest-bundlejms/serializer-bundleをComposerでインストール

$ composer require friendsofsymfony/rest-bundle
$ composer require jms/serializer-bundle

“Symfony 3.x FOSRestBundleとJMSSerializerBundleでREST APIを実装する” の続きを読む

Azure Web AppにデプロイしたPHPからHTTPSサイトにアクセスする

cUrlGuzzleで外部のAPIを利用するアプリケーションをAzure WebAppで動かした場合、証明書が見つからずAPIにHTTPSで接続できない問題が発生します。

HTTPSアクセスする際のSSL証明書の場所は、php.iniのcurl.cainfoに設定しますが、Azure Web Appではd:\home\site\ini/settings.iniファイルで設定できます。

公式ドキュメントは、Azure App Service Web Apps での PHP の構成方法
「PHP_INI_SYSTEM 構成設定の変更」を参照ください。

settings.iniの場所をアプリ設定で指定

[アプリケーション設定] > [アプリの設定]に、キー PHP_INI_SCAN_DIR、値 d:\home\site\ini を追加します。

guzzle-on-azure-webapp
“Azure Web AppにデプロイしたPHPからHTTPSサイトにアクセスする” の続きを読む