FuelPHPの2.x系って死んだの?
ふと、FuelPHP というフレームワークを思い出した。今のように Laravel の一強ではなかったときは FuelPHP もよく選択肢に挙がっていたような気がします。今でもメンテナンスされているのか気になったので GitHub を見ると、活発とは言えないがそれなりに開発はされているので 1.x 系 は大丈夫そう。ただ、2.x系 は完全に死んでいる。残念ですが 2.x系 が正式にリリースされる日は来ないかもしれません。とりあえず 1.x 系 は現役ということが分かったので一安心です。
FuelPHP 1.x系 github.com
FuelPHP 2.x系 github.com
CakePHPのDockerfileを作った話
はじめに
数年前に作った CakePHP の Dockerfile が動作しなくなっていたので修正してみました。
修正結果
最低限、必要なものは入っているはず。
# #-------------------------------------------------------------------------- # Image Setup #-------------------------------------------------------------------------- # FROM php:7.3.3-apache LABEL maintainer="shimomo <yuichi@shimomo.net>" WORKDIR /var/www/cakephp # #-------------------------------------------------------------------------- # PHP Setup #-------------------------------------------------------------------------- # # Install the tools RUN apt-get update RUN apt-get install -y libicu-dev libpq-dev libzip-dev zlib1g-dev zip unzip # Install the PHP intl extension RUN docker-php-ext-install intl # Install the PHP pcntl extension RUN docker-php-ext-install pcntl # Install the PHP zip extension RUN docker-php-ext-install zip # Install the PHP mbstring extension RUN docker-php-ext-install mbstring # Install the PHP pdo_mysql extension RUN docker-php-ext-install pdo_mysql # Install the PHP pdo_pgsql extension RUN docker-php-ext-install pdo_pgsql # Install the PHP composer RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer # #-------------------------------------------------------------------------- # Apache Setup #-------------------------------------------------------------------------- # COPY ./000-default.conf /etc/apache2/sites-available/000-default.conf COPY ./001-default-ssl.conf /etc/apache2/sites-available/001-default-ssl.conf RUN usermod -u 1000 www-data RUN groupmod -g 1000 www-data RUN apt-get install -y ssl-cert RUN make-ssl-cert generate-default-snakeoil RUN a2enmod ssl RUN a2enmod rewrite RUN a2ensite 001-default-ssl.conf # #-------------------------------------------------------------------------- # Port Setup #-------------------------------------------------------------------------- # EXPOSE 80 EXPOSE 443
ビルドしたイメージは こちら です。
動作検証
$ git clone git@github.com:cakephp/app.git cakephp $ cd cakephp $ docker run -d -p 80:80 -p 443:443 -v ${PWD}:/var/www/cakephp --name cakephp shimomo/cakephp $ docker exec -it cakephp composer install
ここで http://127.0.0.1/ にアクセスしてみる。
Could not load configuration file: /var/www/cakephp/config/app.php
何やらファイルが読み込めないらしい。 調べた感じだと config/app.php は composer install で自動生成されるファイルらしい。 それが生成されていないのが原因なので、もう一度 composer install を実行してみる。
$ docker exec -it cakephp composer install
すると、以下のように無事 config/app.php が生成された。
Created `config/app.php` file Created `/var/www/cakephp/tmp/cache/views` directory Set Folder Permissions ? (Default to Y) [Y,n]? Y Updated Security.salt value in config/app.php
再び http://127.0.0.1/ にアクセスしてみると CakePHP のデフォルトページが表示されましたとさ。 しかし、最初の composer install で config/app.php が生成されなかった理由は何だろうか? 気が向いたら調べてみよう。
おわりに
最近は Laravel を使うことが多いので、役に立つ日が来るかは分からない。
StripeのWebhookをテストする方法
はじめに
クレジットカード決済のデファクトスタンダードといっても過言ではない Stripe について軽く触れようと思います。 とりあえず、今回は Stripe の Webhook をテストする方法について紹介します。
トンネリングを使う方法
これが 公式ドキュメント で紹介されている方法です。 トンネリングサービスとしては ngrok が挙げられています。
ngrok の簡単な使い方としては、8080番ポートでアプリケーションが動作しているときに以下のコマンドを実行すると URL が発行されてローカルサーバを外部に公開できます。 発行された URL を Stripe のダッシュボードから設定すれば Webhook をテストできるようになります。 非常に簡単ですね。
$ ngrok http 8080
なお、ngrok は無料プランだとサブドメインを固定できないため起動するたびにランダムなURLが発行されます。 そのため、頻繁に Stripe のダッシュボードから URL を書き換える必要があるかもしれません。 さすがに面倒くさいので自動化するコマンドを作ってみました。 以下のコマンドを実行することで ngrok が発行した URL を Stripe の Webhook の URL に自動で反映させることができます。
$ narikiri --key sk_test_************************
ちなみに、sk_test_************************ の部分はテスト用のシークレットキーです。 ダッシュボードから取得してください。 また、制限付きのシークレットキーを使う場合は Webhook エンドポイントの読み書き権限が必要です。 インストール方法などは こちら を参照してください。
モックサーバを使う方法
Stripe の Webhook をシミュレートするローカルサーバに構築する方法です。 この方法を使う場合はできる限りメンテナンスされているものを使うと良いでしょう。 実際の使い方については こちら を参照してください。
ゲートウェイを使う方法
ngrok のようなトンネリングサービスを使う場合、開発者が1人であれば特に問題はありません。 しかし、開発者が複数人いる状況で Webhook をテストするときに、エンドポイントが頻繁に変わるのは使い勝手が非常に悪いです。 そんなときは こちら の記事のようにエンドポイントを1箇所にまとめる方法が望ましいと思います。
おわりに
Stripe の Webhook をテストする方法について紹介しました。 1人で開発する場合は ngrok のようなトンネリングで十分だと思います。 Webhook 処理を複数人で開発する場合はゲートウェイを使う方法が良いのかなと思います。
WerckerでLaravelのテストを実行する方法
はじめに
Wercker をご存知だろうか? 無料でプライベートリポジトリの CI が行える素晴らしいサービスである。 そんな Wercker で Laravel のテストを実行する方法を紹介します。
連携
Adding a New Application を参考にしながら GitHub, Bitbucket, GitLab のいずれかのアカウントと Wercker を連携させます。
設定
Laravel のプロジェクト内に wercker.yml を作成します。 そして、wercker.yml に以下のような設定を記述してプッシュすると Laravel のテストが実行されます。 なお、データベースを使う場合は追加の設定が必要となります。
box: shimomo/laravel build: steps: - script: code: |- composer install - script: code: |- php -r "file_exists('.env') || copy('.env.example', '.env');" php artisan key:generate --ansi - script: code: |- vendor/bin/phpunit
おわりに
Wercker で Laravel のテストを実行する方法を紹介しました。 実際に Wercker と GitHub を連携させた環境は こちら です。