- 1. PHP8.0復活!Homebrewのicu4cバージョンアップに対応する方法
- 2. 高いジムなのに休館しててムカついた勢いでWebアプリリリースした話
- 3. WordPressをローカル環境でDockerを使って一瞬で動かす備忘録
- 4. PhpStormで空行の空白が勝手に削除される 👿【Settings/Preferences | Editor | General | Remove trailing spaces on:】
- 5. [Dompdf] LaravelでPDFを出力する
- 6. 静的なLPをdistをルートとして確認する
- 7. WordPress Contact Form 7 で問い合わせ種別に応じて複数の宛先に管理者向けメールを送る方法
- 8. エロ画像検出APIを用いてエロ画像のアップロードを阻止してみる【後編】
- 9. Laravel8 新規作成したプロジェクトのMySQLにログインする方法
- 10. Laravelのソート操作:usort、sortBy、orderByの違い
- 11. XserverでPHPのバージョンを上げる時に困った話
- 12. php-fpmの設定ファイルの場所を探す
- 13. ①Laravelのクエリビルダー
- 14. 投稿アプリで本人以外が記事を削除できなくする (Laravel)
- 15. steamのAPIを使用して積みゲーを調べてみた.
- 16. Laravel × Vue チュートリアル with PokeAPI(ポケモン)
- 17. 【Laravel】ファイル拡張子のバリデーションを実装する際の注意点
- 18. 【Laravel】【PHP】トレイト(Trait)を活用して実装を再利用する
- 19. Windows11でLaravelの環境構築してみた()
- 20. Laravel忘備録-カラムの文字数を変更するマイグレーション-
PHP8.0復活!Homebrewのicu4cバージョンアップに対応する方法
# Mac の Homebrew で入れた PHP8.0 が使えなくなったので対処してみた
最近、PHP8.3 にアップデートしたら、突然 PHP8.0 が使えなくなったんです。どうやら、icu4c が 74 に依存するようになってしまい、PHP8.0 では icu4c のバージョンが 73 じゃないとダメみたい。なので、ちょっとした対処方法をシェアします!
## エラーの発生
まず、ターミナルで `php -v` コマンドを叩いたらこんなエラーが出ました。
“`bash
$ php -v
dyld[660]: Library not loaded: /opt/homebrew/opt/icu4c/lib/libicuio.73.dylib
Referenced from: <139D175A-03FF-30B0-926E-B3B5282021FF> /opt/homebrew/Cellar/php@8.0/8.0.30_1/bin/php
Reason: tried: ‘/opt/homebrew/opt/icu4c/lib/libicuio.73.
高いジムなのに休館しててムカついた勢いでWebアプリリリースした話
## 自己紹介
皆様はジムに行かれてますでしょうか。私は健康を目指して週3で通っております。
大学生のときに、某24hジムでバイトしていたことをきっかけにジムに通い始めました。
その習慣は6年後の今でも続いており、転職を機に最高峰のジムと謳われるゴールドジムに転入しました。
しかし、ゴールドジムは会費が高いです。普通の24hジムの3〜4倍はするんじゃないでしょうか。## ゴールドジムの問題点
早速ですが、ゴールドジムに文句をつけていきます。
ペルソナ設定ってやつです。ゴールドジムには、休館日があります。
運営の視点からすれば、その間に掃除をしたり、スタッフの方もお休みも必要ですから、なんら問題はありません。でも、私は夜型です!22時からやる気が出るのです。
そのため、普段は営業時間の長い大阪付近のゴールドジムで汗を流しています。
ジュラシック木澤さん や なかやまきんに君、横川くんの動画を見なから、フガフガとシムの前までくると。**「本日は閉館しました。」**
![スクリーンショット 2024-09-04 21.28.45.png](https://qiita-im
WordPressをローカル環境でDockerを使って一瞬で動かす備忘録
普段Wodpress関連をローカルで開発するときには、WSL2環境でApacheを使って行っています。
しかし、訳あってdockerで動かす必要があったのでその時の備忘録です。正直、難しいんだろうな・・・
呪文の書(dcoker-compose.yml)かけるかな・・・
と不安だったのですが、 **一瞬でした。**
`docker-compose.yml`の書き方は後で覚える!今は開発環境作るのが先やで!という方はコピペ爆速でいけるはずです。
是非どうぞ!# 環境
– WSL2
– Docker Desktop for Windows
– WordPress最新
– MySQL# 爆速を求めてるあなたに
何も気にせず次の通りにしてください。
1. Dockerを起動(私はDocker Desktop for Windowsを使ってます)
1. プロジェクトを置きたいディレクトリに`dcoker-compose.yml`ファイルを作成
1. `docker-compose.yml`に以下をコピペ
“` docker-compose.yml
version:
PhpStormで空行の空白が勝手に削除される 👿【Settings/Preferences | Editor | General | Remove trailing spaces on:】
原因はこいつじゃない
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435735/8647dd3c-c816-7019-64ce-9c29c5e0a3a8.png).editorconfigが原因
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435735/71f06f51-d726-c2fc-d5f7-233d5c204cc4.png)
“`ini:.editorconfig
root = true[*]
charset = utf-8
end_of_line = lf
insert_final_newline = true
indent_style = space
indent_size = 4
trim_trailing_whitespace = true ←削除するよ[*.md]
trim_trailing_whitespace = false[*.{yml,
[Dompdf] LaravelでPDFを出力する
# 導入
これまでlaravelでPDFを出力する際にはlaravel-snappyを使用していました。
しかし、laravel-snappyを使うためのwkhtmltopdfのサポートが2023年に切れてしました😭😭代替としてDompdfを使用することになったので、導入手順をまとめようと思います。
https://github.com/dompdf/dompdf
動作環境:Docker, laravel 10
# インストール
“`bash
# dompdfをインストール
composer require dompdf/dompdf# config/dompdf.phpを作成
php artisan vendor:publish –provider=”Barryvdh\DomPDF\ServiceProvider”
“`# 基本設定
#### 1.app.phpのproviders, aliasesへそれぞれ追加
“`app.php
‘providers’ => [
.
.
.
\Barryvdh\DomPDF\Servic
静的なLPをdistをルートとして確認する
静的なLPをつくってるとルート相対パスなどサーバー上げないと確認できないことがある。
phpでlocalhost:8000でサーバー起動して確認できる!“`
npm run build
cd dist
php -S localhost:8000
“`http://localhost:8000/
WordPress Contact Form 7 で問い合わせ種別に応じて複数の宛先に管理者向けメールを送る方法
# はじめに
問い合わせ種別に応じて、各担当のメールアドレス宛にメールを送りたいこと、あると思います。
Contact Form 7は以下のようにプルダウンのvalueにメールアドレスを設定すれば、やりたいことが出来るには出来るのですが…“`php
[select* type id:type class:form-select include_blank “イベントに関する問い合わせ|test+event@example.co.jp” “求人に関する問い合わせ|test+recruit@example.co.jp” “ホームページに関する問い合わせ|test+web@example.co.jp” “その他|test+etc@example.co.jp”]
“`valueにメールアドレスの一覧を羅列するのって結構抵抗ありませんか? 私はあります。
担当のメールアドレスが変わったら、メンテナンスが大変ですし、
担当のメールアドレスが複数あったら、実装も大変になります。なので、Wordpress管理画面にオプション画面を設置し、
問い合わせ種別に応じて、それぞれ複数のメー
エロ画像検出APIを用いてエロ画像のアップロードを阻止してみる【後編】
こんにちは!すぎちゃんです!
今回は前編に引き続き、Fargateコンテナと連携をした「エロ画像防止機能」をlaravelで作っていこうと思います! :muscle:
こちらの記事にも「いいね :heart: 」よろしくお願いします!
:::note info
[エロ画像検出APIを用いてエロ画像のアップロードを阻止してみる【前編】](https://qiita.com/sugichaaaan/items/738867e4bc3a1a0077d9)
:::## :file_folder: ディレクトリ構造
今回の実装で使用する、クラス、bladeファイルを一挙公開いたします!
srcを起点にtreeを起動してしまうと枠に収まりきらなくなるので、直下のappディレクトリ、resourcesディレクトリでそれぞれコマンドを叩きファイル構造を可視化しました。
`(省略)`と末尾についているディレクトリについては、今回のエロ画像検出機能とは関係がないので配下のディレクトリ、及びファイルの表示は控えさせていただきます:sweat_drops:
### [src/ap
Laravel8 新規作成したプロジェクトのMySQLにログインする方法
# 前提
以下のコマンドを実行し、Laravel8のプロジェクトを作成していること
“`
composer create-project laravel/laravel {プロジェクト名} “8.*” –prefer-dist
“`# MySQLのサーバー起動
“`
$ sudo mysql.server start
“`# ログインコマンド実行
“`
$ sudo mysql -u {ユーザ名} -h {ホスト名} -p
“`
.env の初期値から特に変更していないため、ユーザ名は「root」ホスト名は「localhost」を指定
正しいパスワードを入力するとログインに成功する
“`
$ sudo mysql -u root -h localhost -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 8.1.0 HomebrewCopyright (c) 200
Laravelのソート操作:usort、sortBy、orderByの違い
Laravelでは、データの並べ替え(ソート)を行うためのいくつかの方法があります。
– PHPのusort関数
– Laravel独自のsortByメソッド
– クエリビルダのorderByメソッド本記事では、それぞれの使い所を紹介します。
## usortとは?
usortは、PHPの組み込み関数であり、ユーザー定義の比較関数に基づいて配列をソートするために使用されます。シンプルなソートから複雑なカスタムロジックに基づくソートまで、柔軟に対応できるのが特徴です。### usortの基本的な使い方
“`php
usort($array, ‘callback’);
“`– **$array:** ソート対象の配列、usortはこの配列を直接変更します
– **’callback’:** 2つの要素を比較するためのユーザー定義の比較関数。この関数は次の値を返します:
– 負の整数($a < $b の場合) - 正の整数($a > $b の場合)
– 0($a == $b の場合)
### usortを使った例
配列内のオブジェクトを特定のプロパテ
XserverでPHPのバージョンを上げる時に困った話
# はじめに
こんにちは、エンジニアのkeitaMaxです。
今回はXserverでPHPのバージョンが上げられなくて困ったことについて備忘録として書きます。
# 困ったこと
XserverのサーバパネルでPHPのバージョンを上げたが、コマンドでPHPのバージョンを確認したら上がってなくて困りました。
![スクリーンショット 2024-08-29 13.06.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3715123/1c1fb5e8-5c3e-b435-a167-83680c8350e0.png)
“`
$ php -v
PHP 8.1.22 (cli) (built: Aug 15 2023 11:02:44) (NTS)
“`# 解決策
`/usr/bin/`にあるphpのシンボリックリンクを修正したら直りました。
“`:/usr/bin/
$ unlink php
$ ln -s /usr/bin/php8.2 php
“`“`
$ php -v
PH
php-fpmの設定ファイルの場所を探す
`php-fpm -t` コマンドで探す
“`
$ docker run php:8.3-fpm php-fpm -t
[01-Sep-2024 19:57:29] NOTICE: configuration file /usr/local/etc/php-fpm.conf test is successful
“`“`
$ docker run php:8.3-fpm ls /usr/local/etc/php-fpm.conf
/usr/local/etc/php-fpm.conf
“`見つかりました!
## 補足
“`
$ docker run php:8.3-fpm php-fpm -h
Usage: php [-n] [-e] [-h] [-i] [-m] [-v] [-t] [-p] [-g ] [-c ] [-d foo[=bar]] [-y ] [-D] [-F [-O]]
-c| Look for php.ini file in this directory
①Laravelのクエリビルダー
## クエリビルダーとは
SQLの命令文(クエリ)を作成して実行するための機能## やりたいこと
・各月ごとに投稿されたブログ数の集計まず
“`
$blogCounts = DB::table(‘blogs’)
“`
Laravelのクエリビルダーを使用してblogsテーブルに対してクエリを構築します“`
->select(
DB::raw(“DATE_FORMAT(created_at, ‘%Y-%m’) as month”),
DB::raw(“COUNT(*) as blog_count”)
)
“`
DB::raw 生のSQLを直接クエリへ組み込むために使用します
created_atを’2024-09-01 12:34:56’→’2024-09’として、monthというエイリアスにし、
その月のブログ投稿数をカウントして、blog_countというエイリアスにします※DATE_FORMAT 関数を使用すると引数に指定した日付を
指定のフォーマットで整形した文字列にして取得することができます“`
->groupBy(DB
投稿アプリで本人以外が記事を削除できなくする (Laravel)
## はじめに
Laravel学習の一環でBreezeを利用した簡単な記事投稿アプリを作成しました。
その際、投稿した本人以外が記事を編集・削除できないようにする機能を実装してみたので、備忘のため記事に残します。## 完成イメージ
投稿した本人の場合 → 編集・削除ボタンが表示される
![スクリーンショット 2024-09-01 19.17.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3362317/93182f55-f314-b928-a983-3545a0367a58.png)投稿した本人**以外**の場合 → ボタンが表示されない
![スクリーンショット 2024-09-01 19.19.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3362317/e37fb7a5-5de7-9d3e-3985-30f83564ccd5.png)## 実装フロー
1. ビューに記事の投稿者を確認するロジッ
steamのAPIを使用して積みゲーを調べてみた.
まず前提条件としてsteamのAPIを使用するにはsteamの商品をある一定の金額以上購入している人しか使えないみたい.
APIの登録は下記のリンクから可能です.https://steamcommunity.com/dev/apikey
登録が終わったら登録したドメインから下記のソースコードを実行します.
なお、コンフィグ値はご自身にあった値へ変更してください.https://github.com/taoka3/steam
“`php:steam.php
APIKEY,
‘steamid’
Laravel × Vue チュートリアル with PokeAPI(ポケモン)
# はじめに
初心者向けのチュートリアルとして Laravel 11 と Vue 3 を組み合わせたアプリケーションを作成する方法を説明しています。また、本記事では Vue 3 の記法として Options API を用いて記述しております。
Options API は Vue 2 の記法と同じであり、少し手順を変更すれば Vue 2 を用いたチュートリアルとしても活用できると考えたためです。# 完成イメージ
ポケモンのデータを取得できる無料のAPI「PokeAPI」を用いて、ポケモンの一覧を表示します。また、お気に入りのポケモンを登録/解除できる機能を作成し、気になるポケモンに目印を付けることを可能とします。# 前提条件
– Docker が使用できる状態であること# 用いる技術
– PHP 8.3
–
【Laravel】ファイル拡張子のバリデーションを実装する際の注意点
# はじめに
Laravelでアップロードされたファイルの拡張子をバリデーションする`mimes`ルールに
ついて、誤った認識をしていたため忘れないよう記事にしました。# 結論
`mimes`ルールは拡張子をみているわけではなくファイルの内容を読み取って取得したMIMEタイプをみているため注意が必要。(ドキュメントをしっかり確認するべきでした。。)
>ファイルは、リストする拡張子のいずれかに対応するMIMEタイプを持っていることをバリデートします。# 実験
.txtファイルを許可するバリデーションに、SQLが書かれた`hoge.sql`をアップロードして`$validator->errors()->first(‘file’)`にエラーメッセージが入っているか確認します。“`php:TestRequest.php
class TestRequest extends FormRequest
{
public function rules()
{
return [
‘file’ => [
【Laravel】【PHP】トレイト(Trait)を活用して実装を再利用する
# はじめに
今回はPHPに実装されている
**トレイト(Trait)**
と呼ばれる仕組みについて記載してみました。# トレイト(Trait)とは
以下、PHP公式ドキュメントでの説明が下記となります
> PHP は、コードを再利用するための「トレイト」という仕組みを実装しています。
>
> トレイトは、PHP のような単一継承言語でコードを再利用するための仕組みのひとつです。 トレイトは、単一継承の制約を減らすために作られたもので、 いくつかのメソッド群を異なるクラス階層にある独立したクラスで再利用できるようにします。 トレイトとクラスを組み合わせた構文は複雑さを軽減させてくれ、 多重継承や Mixin に関連するありがちな問題を回避することもできます。
>
> トレイトはクラスと似ていますが、トレイトは単にいくつかの機能をまとめるためだけのものです。 トレイト自身のインスタンスを作成することはできません。 昔ながらの継承に機能を加えて、振る舞いを水平方向で構成できるようになります。 つまり、継承しなくてもクラスのメンバーに追加できるようになります。https
Windows11でLaravelの環境構築してみた()
## 導入
こんにちは、こんばんは、おやすみなさい、**Twil3akine**です。今回、純粋なWindows (=Dockerとかを使わず) にLaravel環境を構築(超助けてもらいながら)したので、備忘録と誰かの助けになればいいなと思い、残しておきます。
1. **php** の インストール
2. **Laravel** の インストールという感じで行こうと思います。
## 1. php の インストール
1. phpのインストールhttps://windows.php.net/download#php-8.3 に飛んでもらい、スレッドセーフの方で自身のバージョンにあうもの (= x64 or x86) のZipを選んでダウンロードし、そのままダウンロードしたものを解凍してほしいのですが、個人的なおすすめは `C:\php` というディレクトリを新しく作ってそこに解凍するのをおすすめします。
2. PATH通し
PCの検索欄からコントロールパネル ->
コントロールパネルの右上の検索欄に「環境変数」で出てくる「システム環
Laravel忘備録-カラムの文字数を変更するマイグレーション-
カラムの文字数を変更するマイグレーションファイルを作成する機会があったため忘備録として記録に残そうと思います。
# 想定するデータ
usersテーブル
“`
+—————+———————+——+—–+———+—————-+
| Field | Type | Null | Key | Default | Extra |
+—————+———————+——+—–+———+—————-+
| id | bigint(20) unsigned | NO | PRI | NULL | auto_increment |
| name | varchar(50) | NO | | NULL | |
| created_at |