docker-composeをつかってLaravel9とPHP8.0の実行環境を構築する手順を説明します。
コンテナはnginxとphp-fpmを使う方法もありますが、今回は本番環境へデプロイを容易に行えることを考慮してapacheをwebサーバにします。
## Laravelをインストール
...
phpでXDebugの設定をする場合、XDebugに関する設定方法をgoogle検索すると、以下のように設定すると良いといった記事がいくつかヒットします。
```language-ini
[xdebug]
xdebug.remote_enable=1
xdebug.remote_autostart=1
xdebug.remote_host=hos...
DMM英会話では大半の教材がブラウザで表示できる形になっています。ですが教材ページのhtmlでの装飾が少し見づらいなと感じることがあります。このため、余計な情報を全部カットしてcsv形式に整形し直してみました。
## 本記事の対象読者
この記事は...
例えば、以下のようなクラスがあって、`const MAX_ITEM_PER_USER = 200`として定義されている200の値を、PHPUnitによるテストのときだけ変更したい場合があります。
```language-php
class UserItem
{
const MAX_ITEM_PER_USER = 200;
}
```
...
PHPのComposerでは、実行するphpのバージョンを依存関係として指定できます。
現在開発している端末のphpバージョンを依存関係に加えるには、`composer require php`を実行すればよいです。
## 実行例
まずは、現在使っているphpのバージョンを`p...
PHPでGuzzleを使用していると、下記の`cURL error 28`が発生することがあります。
```language-php
cURL error 28: Resolving timed out after 5001 milliseconds
(see https://curl.haxx.se/libcurl/c/libcurl-errors.html)
for http://example.co...
Laravelでは文字列操作のためのヘルパクラスとして、Strクラス(Illuminate\Support\Str)が用意されています。
これのFluent版のメソッドを使うとメソッドチェーンで文字列を加工できるのでコードを簡潔に書くことができます。
```language-php
$str...
PHPにはphpcsというコードチェッカがあります。
実行することで問題があるコードをチェックでき、どのファイルに問題があるかが一目でわかります。
```language-bash
$ docker-compose exec app vendor/bin/phpcs
...
FILE: /var/www/html/app/...
LaravelのStrorageクラスでは、copy()メソッドでファイルをコピーすることができます。ですが、これはコピー元と先が同じdisk定義されている必要があります。
この記事では、異なるdisk間でファイルをコピーする方法を説明します。
## 前提
confi...
Laravelでcomposerを利用したクラスのオートロードがうまくいかない場合、下記のワンライナーでComposerが持っているクラスマップをダンプできます。
```language-bash
% ./artisan tinker
Psy Shell v0.10.5 (PHP 7.3.11 — cli) by Justin Hileman
...
LaravelのFormValidatorでは、validationに失敗すると自動で遷移元のページにリダイレクトされます。
これは、通常の入力フォームでバリデーションを行う場合は、自動的にユーザに再入力を促せるので便利なのですが、この戻り先のページをカスタマイズ...
書籍を裁断し、自宅のスキャナ([Canon MF249](https://www.amazon.co.jp/dp/B01LVYW3K1))でスキャンした画像(ファイル名連番のjpgファイル)からスキャンした画像の余白を取り除く作業をしたので、その時のメモです。
## 書籍の裁断
書籍の裁断近くに...
Laravel6のプロジェクトを`composer update`コマンドでLaravel7にアップデートする機会があったので手順を書いておきます。
## composer.jsonの編集
composer.jsonを更新するのですが、Laravel7のアップグレードに関するガイドをみると下記の記載が...
LaravelではMailクラスによってメール送信処理を簡単に作ることができます。
ローカル開発やPHPUnitでは、実際にメールを送信させるのではなくファイルに出力させるなど、メールの送信メソッドがコールされた時の振る舞いを差し替えたい場合があります...
Laravelではauthパッケージのセットアップを行うと、routes/web.phpに下記の1行を書くだけでルーティングが自動設定されます。
```language-php
Auth::routes();
```
どうして1行書くだけでルーティングを設定できるのでしょうか? Auth::routes()...
メモ。
- [jwt-auth + Laravel6 アクセストークンとリフレッシュトークン](https://www.yuulinux.tokyo/15384/)
LaravelでVue.jsを使用したSPAサイトを作成していて、Basic認証とjwtトークン認証の組み合わせが必要だったのでメモ。
## 作ったもの
Vue.jsによるhtmlと、WebAPIによる非同期データ取得によるサイト構築を行った。
- WebAPIエンドポイント
...
LaravelでWebAPIサーバを作成する時、クロスドメインアクセスを行うためにCORSの処理を作成する場合があります。技術検証などでどこからでもアクセスできるCORSの処理をてっとり作ることが何度か発生したので手順をメモしておきます。
## middlewareを...
LaravelでCORS処理を行いたい場合、barryvdh/laravel-corsパッケージを使うと便利です。
## 作業手順
### パッケージのインストール
```language-bash
composer require barryvdh/laravel-cors
```
### middlewareの有効化
```language...
Laravelではリソースコントラーを使うことで、CRUD処理でよく使われるルーティングを簡単に登録することができる。
## 作業手順
artisanコマンドでコントローラを追加。リソースコントローラは`artisan make:controller`にオプション`--resource`...
Laravelで.envを書き換えた内容が反映されない時は、artisan config:clearする。cache:clearではクリアできないので注意。
```language-php
php artisan config:clear
```
ファイルを直接消す場合は以下のコマンドを実行する。
```language-bas...
Laravel7が標準で用意しているAuthでログインした時で行われていることを確認する。
(何度も同じことを調べるので、調べた結果をメモしておく)
## GET /login
ログイン画面が表示される。
id/passを入力してLoginボタンをクリックすると`P...
## 発生したエラー
Deployerで`./dep deploy`コマンドでデプロイしようとしたところ、`package:discover`のステップでエラーが発生した。
```language-php
$ ./dep deploy xxxx
In Client.php line 103:
[Deployer\Exception\RuntimeExceptio...
## 発生した事象
Laravel7 + Vue.jsの開発で、`npm run hot`を実行したところ、EADDRINUSE / ELIFECYCLEエラーが発生し、ビルドが出来なかった。
```language-bash
$ npm run hot
> @ hot /.../project
> cross-env NODE_ENV=development node_...
Ansibleのgeerlingguy.phpロールを使っていて、PHPのバージョンを指定したい場合は`geerlingguy.php-versions`を使うと良いです。
下記の例ではPHP7.4.xのインストールを指示しています。
```language-yml
# playbook.yml
- role: geerlingguy...
Ansibleでnginxがインストールされた環境に対してgeerlingguy.phpのロールを実行するとwebサーバの再起動で下記のエラーが発生します。
```language-bash
$ ansible-playbook playbook.yml
...
RUNNING HANDLER [geerlingguy.php : restart webser...
PHPのデプロイツールであるdeployerでサーバにデプロイしようとした時`deploy:update_code`のタスクで下記のエラーが出ることがあります。
```language-bash
$ ./dep deploy local
...
➤ Executing task deploy:update_code
@@@@@@@@@@@@@@@@@@@@@@...
composer.jsonにdockerコマンドを書いておくことで、laravelのプロジェクトを(PHPのビルトインサーバではなく)php-fpmを使ってコマンド1つで起動させることができます。
## 作業手順
まず`composer.json`に下記の行を追加します。
```language-j...
DockerでPHP7.4のコンテナを使ってhello worldを出力する最低限のコードです。
php-fpmの設定などでハマって問題の切り分けが難しい時などに覚えておくと便利です。
## プログラムを用意
```language-bash
mkdir -p src/public
echo '
Laravelプロジェクト作成時のテンプレート作成時に実行するコマンド
```language-bash
composer global require laravel/installer
#--------------------------------------------------------
# create prject
#------------------------------...
Laravelのメール送信で、AWSのSES(Simple Mail Service)を利用する場合、Laravelが提供しているsesドライバを使うと簡単にメール送信処理が実装できます。
本記事では、Laravelのsesドライバを使用して上手くメール送信ができない時に、ありがちな問題...
LaravelのEloquentでsum()やavg()の集計関数を使うと、結果が数字でなく文字列で返ってきます。
```language-php
$totalScore = UserScore::where('team_id', $teamId)->sum('get_point');
\Log::info(json_encode($totalScore)); // "10" (10では...
関連ドキュメント
- [Qiita: Laravel tymon/jwt-auth による JWT 認証](https://qiita.com/yh1224/items/3c52dd9df3c4b5be95f2)
- [JSON Web Token Authentication for Laravel & Lumen](https://jwt-auth.readthedocs.io/en/develop/)
- [jwt.io](ht...
Laravelは、`artisan make:request`コマンドで入力パラメータをvalidtionできるFormRequestクラスを作成できます。
artisanコマンドで作成したFormRequestを編集せずに使用すると`This action is unauthorized.`が出るので注意が必要です。
## エラ...
PHPにはユニットテストを行う仕組みとしてPHPUnitがあります。
PHPのパッケージphpunit-watcherを使うことで、プログラムのソースが変更(Ctrl-Sで保存)されるたびに自動でPHPUnitを実行させることができます。
## インストール
phpunit-watcherの...
macOSでhomebrewを使って、php7.3をインストールする方法です
## 作業手順
macに入っているphpのバージョンを確認します。手元の環境では7.1でした。
```language-bash
$ php -v
PHP 7.1.19 (cli) (built: Aug 17 2018 18:03:17) ( NTS )
Copy...
Dockerfileの公式phpコンテナを使っていて、標準で入っていないextensionを追加したい時があります。
このような場合に備えて、公式コンテナではdocker-php-ext-installコマンドを用意してくれています。
以下のようにRUNコマンドを記述することで希...
PHPでクラスのコンストラクタは、引数がない場合はカッコを省略することができます。
```language-php
// どちらも書き方もOK
$a = new SomeClass();
$a = new SomeClass;
```
どちらの書き方でも同じ動作をするのですが、どちらの表記法にした...
PHPでハッシュの配列(DBの検索結果など)を、特定のキーでグループかする方法です。
## Laravelの場合
Laravelの場合はcollectオブジェクトにgroupBy()メソッドがあるため、これを利用できます。
```language-php
$collection = collect([
...
apacheやnginxなど、webサーバのアクセスログ(access.log)をtsv形式に変更するphpスクリプトです。
### スクリプト
```language-php
Laravelでvue.jsを使用して、vuejs.orgの"はじめに"に書かれている"Hello Vue!"を表示させようとすると、下記のエラーが出ることがあります
- 作成したhtmlの例
```language-html
{{ message }}
```
- エラーメッセージの例
```langua...
PHPのcomposerで、composer自身のバージョンをアップデートしようとself-updateすると、下記のエラーが出る場合があります。
```language-bash
$ composer self-update
Updating to version 1.7.1 (stable channel).
Downloading (100%)
...
複数のデータを扱うプログラムを作る時、各データ系列ごとに適切な色を割り当てて表示させたい場合があります。
PHPスクリプトからこのような事を行いたい場合、PHLAK/Colorizerパッケージが役に立ちます。
PHLAK/Colorizerパッケージでは、文字列を...
適当なファイルを作って、下記のphpスクリプトを実行すると、ファイルの内容がURLエンコードされます。
```language-bash
cat foo.txt | php -R 'echo(urlencode($argn).PHP_EOL);
```
phpコマンドのオプション'-R'は標準入力1行づつに対して指...
PHPのデプロイツールであるDeployerで、ターゲットのサーバへSSHログインするときのSSHキーファイルを指定する方法です。
## inventory()でファイルを指定する場合
inventory()メソッドを使ってサーバの接続情報を管理7得る場合は、以下のように、iden...
CircleCIでPHPのプロジェクトをDeployerを使用してデプロイメントしようとすると、下記のエラーが出る場合があります。
```language-bash
Deploying master on 11.22.33.44
done on [11.22.33.44]
Executing task deploy:prepare
[11.22.33.44] > ech...
composer installコマンドを実行した時に、以下のようにProcessTimedOutException例外が発生して、パッケージのインストールが失敗することがあります
```language-bash
> composer install
...
[Symfony\Component\Process\Exception\ProcessTime...
phpのデプロイメントツールにDeployerというものがあります。
最近のphpプロジェクトでは、アプリケーションのデプロイメントでcomposerによるパッケージのインストールや、キャッシュのクリアなど行うべき作業が色々増えてきています。Deployerを使う...
Laravelでプロジェクトを作成して、プログラムを実行しようとすると下記のエラーが発生する場合があります。
```language-bash
UnexpectedValueException
The stream or file "/path/to/storage/logs/laravel.log" could not be opened:
failed to op...
今回は、前回作成したnginx + phpの環境にLaravelをインストールしてみます。
- [CentOS 7.5のf1-microインスタンスにnginx, php-fpm, php7.2環境を作る](https://akamist.com/blog/archives/3256)
- [CentOS 7.5のf1-microインスタンスにswap領域を追...
PHPのフレームワークであるlaravelをcomposerからインストールしようとすると、以下のようにエラー"laravel/framework vX.X.X requires ext-mbstring"が出ることがあります。
```language-bash
$ /usr/local/bin/composer create-project --prefer-dis...
PHPのpearをインストールをインストールしようとして、エラー"Sorry! Your PHP version is too new (7.1.16) for this go-pear."が出た時の解決方法です。
## エラーが出たときのコマンド
以下のように go-pear.phpをダウンロードして実行すると、...
PHPのfile_get_contents()では通常GETでリクエストを送信しますが、POSTでリクエストを投げたい場合があります。
このような場合はfile_get_contents()の第3引数を使えば良いです。
```language-php
phpではPSR-12というコーディング規約があります。作成したphpプログラムがPSR-12の規約に合致しているかをチェックしたい場合、`phpcs`コマンドを使うと便利です。
この記事では、composerでグローバルインストールすることで、コマンドラインからphpc...
PHPでフォームに入力されたテキストを1行づつ処理させたい場合は、`str_replace()`と`explode()`関数を組み合わせると便利です
## サンプルプログラム
下記のプログラムは、GETパラメータで渡されたテキストを改行文字で区切って、1行づつ処理する...
macOS上にcomposerをインストールするためには下記のコマンドを実行すれば良い。
```language-bash
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('SHA384', 'composer-setup.php') === '544e09...
PHPのデプロイメントツールであるDeployerを使用すると、下記のように「To speed up composer installation setup "unzip" command with PHP zip extension https://goo.gl/sxzFcD」エラーが出る場合があります。
```language-bash
$ dep deploy
De...
PHPのdeployerでは、デプロイメントに失敗すると排他制御のロックがかかったままになってしまい、次回実行する時には`dep deploy:unlock`コマンドを手作業で実行する必要があります。
本番運用中はこれで良いのですが、デプロイメントのセットアップ中...
PHPのdeployerでは、deploy.phpの中で以下のようにallow_anonymous_statsをtrueにしておくことで、deployerの作者にツールの使用統計情報を送信する事ができます。
```language-php
set('allow_anonymous_stats', true);
```
この値をtrueにした時、具...
## エラーの内容
deployerでデプロイしようとすると「Failed to execute git clone」のエラーが出る
```language-bash
[root@localhost deployer_test]# php deployer.phar deploy
✈︎ Deploying 1.7/master on localhost
✔ Executing...
投稿ナビゲーション