PHP関連のことを調べてみた2023年07月15日

PHP関連のことを調べてみた2023年07月15日
目次

DockerでのLaravel環境構築時のCould not deleteエラー解決法

# はじめに

こんにちは。今回はDockerを使用してLaravelの開発環境を構築する際に遭遇したエラーとその解決策についてお話します。
`create-project`を実行した後に発生する`[RuntimeException] Could not delete ディレクトリ`というものです。
このエラーが発生して、Laravelのインストールが正常に完了せずドツボにはまっていました。

# 結論

`composer config –global process-timeout (任意の秒数)`を実行してタイムアウト時間を延ばす。

# 記事の対象者

Laravelのインストール中に`could not delete`エラーに直面して困っている方。

# コンテナの中身

phpコンテナとnginxコンテナのみのシンプルな構成です。

# エラー解消の詳細

まず、`Could not delete`エラーの原因を調査しました。その結果、以下の3つの可能性が挙がりました。

1. メモリーの問題
2. ネットワークの問題
3. パーミッションの問題

しかし、Docker内

元記事を表示

【PHP】特定のクラスであるかを型演算子で判定して条件分岐させる

変数に入っているインスタンスがどのクラスから作ったものかで、処理を分岐させたいことがあるかと思います。

その場合、型演算子 **instanceof** を使うと良いです。

instanceofは、対象のインスタンスがどのクラスかをbooleanで判定してくれる演算子です。
具体的な使い方としては、以下です。
対象のクラス名と比較して、同じクラスからできたインスタンスの場合、trueを返します。
“`php
// $objectはインスタンスが入っている変数
// TargetClassはクラス名
$object instanceof TargetClass
“`

では、具体的に本記事のタイトルでもある、条件分岐させる例を以下に示します。
例えば、アカウントがユーザー(User)と管理者(Admin)の2種類があるとします。
その2つのクラスから作ったインスタンスがあった場合、
どちらかによって処理を分岐させたい場合は以下のようにします。

“`php
Class User
{
}

Class Admin
{
}

$account = new User();

if (

元記事を表示

【Laravel】PHPバージョンアップ後にphp.iniを確認する

# 詰まったこと
AzureにLaravelをデプロイする準備をしている中、ローカル開発環境のLaravelは7.2.1を使っているのにAzureのAppServiceの設定をPHP8.0.1にしてしまったので、ローカルもPHP8.0.1にあげた。

conposer.jsonと環境変数を変えて、いざcomposer updateを実行して出たエラーに時間を取られたので最終的な解決方法メモ

“`
composer update

[Composer\Exception\NoSslException]
The openssl extension is required for SSL/TLS protection but is not available. If you can not enable the openssl extension,

元記事を表示

ITエンジニアなのにまだ投資やってないの?ChatGPTでクオンツシステム作って儲けようぜpart2

## 前回まで
ITエンジニアなのにまだ投資やってないの?ITエンジニアならChatGPTでクオンツシステム作って儲けようぜ(https://qiita.com/kazukichi/items/fa6433c3d0115c2b627b)

## システムなんかで勝てるの?w
日本の投資家には批判的な意見もまだまだある(詐欺的なものも多いですから)みたいですが、エンジニアの皆さんなら分かるでしょう。

出来る

ですよね。
そもそも、勝ってる投資家はいくつかの情報を判断して買いや売りのタイミングを測っていて、それは全て定量化した情報を元に判断してるわけですから。

システムで勝てない!って言ってる人は結局その戦略が悪いだけでシステムが悪い分けじゃないわけです。

因みにITを駆使して、ブランド苺を生産している

**ミガキイチゴ**

というのがあるんですが、熟練職人の「感覚」で判断しているものを職人の視線を全てトラッキングして、

**どういう時に何処を見て判断しているのか**

を数値化して、成功しています。
要は、職人さんが言う「感覚でやってる」というのは実際感覚ではなく、言語化す

元記事を表示

Apache+PHPサーバーのWebサイトをAWS Lambdaで動かす

別チームでホスティングしていたWebサイトがあったのですが、いろいろと都合がありWebサイトのソースとドメインだけをもらい、自分のとこのチームでホスティングする機会があり、「いまさらサーバーとか持ちたくない! サーバーレスでやりたい! それにIaCしたい!」と四苦八苦したメモです。

## 受領したソース

受領したWebサイトですが、販売終了したけれど残しておかないといけない商品サイトとかをイメージしていただけるといいかと思います。アクセス頻度・更新頻度ともに多くはありません。

ファイル種別としては、以下のようなものが含まれます。古き良きCGI的な感じの動的サイトです。

– HTMLファイル
– PHPファイル、incファイル
– アセットファイル
– jsファイル
– スタイルシート
– 画像
– etc…

容量的には全体で400MBくらいですが、そのほとんどはアセットファイルで、HTML,PHPは数MBです。PHPはヘッダーフッターを共通化したり、ニュースやブログ記事のXMLをCMSサーバーから取得・整形したりする用途で使われています。C

元記事を表示

新: Laravel SQLの実行クエリログを出力する

## 概要

今回アップデートしたLaravel [10.15.0](Laravelhttps://github.com/laravel/framework/releases/tag/v10.15.0) でSQL実行ログの出力処理が改善されました。

以前にも同様の記事を書いていましたが、こちらはこちらでしばらく使われるかなと思うので、古い記事は残しつづ新しく記事を書きました。

https://qiita.com/ucan-lab/items/753cb9d3e4ceeb245341

Laravelのアップデート内容についてはこちらに詳しく解説された記事がありますのでご紹介します。

https://qiita.com/fuwasegu/items/c6e668dae1546184ff15

## 環境

– PHP: 8.2.8
– Laravel: 10.15.0 以上
– MySQL: 8.0.32

## SQL実行ログを出力する

### サービスプロバイダーの作成

“`shell-session
$ php artisan make:provider Databas

元記事を表示

フットサルコート予約webアプリを真似して作ってみる

## 説明
PHP,Javascriptの復習のために何か作ろうと思ったのでやってみます。
phpはなんとなく覚えているんですが、JavaScriptは苦手意識があって何も覚えてないのでほぼ0からです。

## 使用言語等
##### フロントエンド
・HTML, CSS, Javascript

##### バックエンド
・phpのLaravelを使ってみる

##### データベース
・MySQL

## その他

やってるうちに必要だったり、面白そうだなって思ったらjavascriptのフレームワークを使ってみる。

元記事を表示

Laravel で使いたい便利なパッケージ4選 (Pint, Larastan, Telescope, Insights)

# はじめに
**Laravel での開発効率・品質向上に繋がる便利なパッケージ**のまとめ記事です。

| パッケージ名 | 用途 | 対応バージョン |
| —- | —- | —- |
| Laravel Pint | コード整形 | PHP 8.1 以上 |
| Larastan | 静的コード解析 | PHP 8.0 以上 かつ Laravel 9.x 以上 |
| Laravel Telescope | デバッグ | PHP 8.0 以上 かつ Laravel 8.37 以上|
| PHP Insights | コード品質分析 | PHP 7.4 以上 |

# Laravel Pint

## 概要
PHP-CS-Fixer をベースとして作成された Laravel 用のコード整形ツール

https://laravel.com/docs/10.x/pint

## 対応バージョン
PHP 8.1 以上

## インストール手順
Laravel 9.x 以上のアプリケーションであれば基本的には不要です。
もしインストールされていなければ、以下のコマンドを実行

元記事を表示

[Laravel 10.15] 生SQLを実行する必要がある方注目!toRawSql()でEloquentからバインド値が組み込まれたSQL文を出力できるようになった!

## はじめに

Laravelが提供しているEloquentというORMは非常に便利で、複雑なクエリも簡単に作成できます。便利なのですが、残念ながらEloquentが使えない場合もあります。

たとえば、クエリのコストや負荷を計測するための`explain`を実行したい場合です。
もう一つは、弊社では安全のために`本番のtinkerでコマンドを実行しないルール`があり、データ抽出の依頼があった場合にはDBのレプリカで生のSQLを実行することになっています。

そのような場合、Eloquentから生のSQLに変換するために`dd()`や`toSql()`といった関数もありましたが、出力されるSQLにクエリパラメータがバインドされず、`?`というプレースホルダのままになってしまいました。そのため、手動でクエリパラメータをSQL文に置き換える必要がありました。

Laravel 10.15のリリースでは、`toRawSql()`関数が追加され、バインドされた値が含まれたSQL文を出力できるようになりました。

## toSql()・dd()・toRawSql()比較

### 今まであった

元記事を表示

PHP/Laravelで使える!?OpenAI APIクライアント

## 背景
もう随分前から生成AI/LLM/ChatGPTあたりの話題が尽きない今日このごろ。
弊社運営のSaaSにもGPTが導入されたりして、結果、お問い合わせが増加していると聞いています。
先日、ふとLaravel Newsのブログ記事などを眺めて居たのですが、やはりというべきか、最近になってGPT関連の記事が複数掲載されていました。PHP/Laravel界隈も例に漏れず、という所のようです。
私も、今更ながらキャッチアップをばと、PHPerの端くれとして、
PHP/LaravelからOpenAI APIを利用する実装を試してみました。

## 事前準備

* Laravel sailで開発環境を構築
* `curl -s “https://laravel.build/example-app” | bash`
* OpenAI APIを利用するため、OpenAIへのSignUpと、APIキーの払出
* https://openai.com/ にアクセスしてSign Up
* https://platform.openai.com/account/billin

元記事を表示

4ステップでLaravelで作ったウェブサイトをさくらサーバーで公開する

## 前提条件
* /home/\/wwwディレクトリが公開ディレクトリとする
* つまり、https://\.sakura.ne.jp/を叩くと/home/\/www以下にアクセスできる
* /home/\/\にLaravelのプロジェクトディレクトリをおく
* https://\.sakura.ne.jp/\/を叩くとプロジェクトのサイトにアクセスできるようにする

## 方法
* さくらサーバーにアクセスする
“`
$ ssh @.sakura.ne.jp
“`

* Composerをインストールする
“`
$ curl -sS https://getcomposer.org/installer | php
“`

* Laravelのプロジェクトを立ち上げる
“`
php composer.phar create-project laravel/laravel
“`

* Laravelのpublicディ

元記事を表示

CSVファイルのMIMEタイプはPHPバージョンで変わるようだ

Webシステムでファイルアップロードをする前に
ファイルの種類をチェックする処理を実装しようとしました。

備忘録として検証結果を投稿します。
 ※サーバ側の構築手順は省略しています

# 検証環境
– サーバ
– Rocky Linux 8
– Apache 2.4.37
– クライアント
– Windows 10
– Google Chrome

# 検証方法
– 検証用ソース(index.php)をサーバ側(/var/www/html/)に格納する
– PHPをインストールする
– クライアント側からhttp://[IPアドレス]/にアクセスする
– 検証したいファイルを選択し、「アップロード」ボタンをクリックする
– 画面に表示されるMIMEタイプを確認する

![画面.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/432162/4eeaa694-2ba7-8a72-de2f-98bff58860a8.png)

# 検証用ソース
“`index.php

元記事を表示

Laravel10で[Class “Database\Factories\UserFactory” not found]が起こってSeederが実行できない

既存のLaravel6のアプリをLaravel10にアップグレードした後、以下のコマンドを実行すると、
“`
php artisan db:seed
“`
[Class “Database\Factories\UserFactory” not found]というエラーを吐かれてしまった。ここからGoogle検索でさまざまな記事や以下のドキュメントを参考にしてなんとか頑張っていたが、長時間解決できず。(ModelにHasFactory追加したりとか。)
https://readouble.com/laravel/10.x/ja/seeding.html

解決策としては、composer.jsonに以下の記述を追加すれば良いだけだった。
[変更前]
“`
“autoload”: {
“psr-4”: {
“App\\”: “app/”
},

“`
[変更後]
“`
“autoload”: {
“psr-4”: {
“App\\”: “app/”,
“D

元記事を表示

【Laravel】リソースコントローラーについて

## はじめに

アプリケーションを作成していく中で必要な考え方として

CRUD「クラッド」という考え方があります。以下の頭文字を取ってCRUDと呼ばれています。

| C | create | 新規作成 |
| — | — | — |
| R | read | 表示 |
| U | update | 更新 |
| D | delete | 削除 |

リソースコントローラーは、CRUDを細かく以下のように7つに分けてURIやルート名などを自動で生成してくれるという機能になります。

| 動詞 | URI | メソッド名 | ルート名 | 名称 |
| — | — | — | — | — |
| GET | /photos | index | photos.index | 一覧の表示 |
| GET | /photos/create | create | photos.create | 新規作成 |
| POST | /photos | store | photos.store | 保存 |
| GET | /photos/{photo} | show

元記事を表示

【PHP8.3】Overrideが明示できるようになる

PHPドキュメントでよく使われる[phpDocumentor](https://docs.phpdoc.org/)、およびドキュメントの推奨フォーマットである[PSR-5](https://github.com/phpDocumentor/fig-standards/blob/master/proposed/phpdoc.md)・[PSR-19](https://github.com/php-fig/fig-standards/blob/master/proposed/phpdoc-tags.md)には、何れも何故か[`@Override`がありません](https://qiita.com/rana_kualu/items/8b2d9d42b81e9f6f0fd1)。
なんでや。

ということでPHP本体にアトリビュート`#[\Override]`を追加するRFCが提案されました。
既に受理されており、PHP8.3から使えるようになります。

以下は該当のRFC、[Marking overridden methods](https://wiki.php.net/rfc/marking_

元記事を表示

PHPの基礎(仮)

# 実行環境
とりあえず最新のバージョンで始めました。
– MAMP 5.0.5
– PHP 8.0.1
– MySQL 5.7.24
– Google Chrome
# PHPの基本
### PHPのルール
PHPでは下のコードのように処理を囲みます。例では、「echo」を使用して、Hello Worldを出力しました。
~~~php:index.php

~~~
出力結果です。実際にはChromeに表示されています。
~~~:出力
Hello World
~~~
処理が1行の場合は、セミコロンを省略しても動作します。
~~~php:index.php

~~~
~~~:出力
Hello World
~~~
### 変数の定義方法
変数の名前の前に$をつけて定義します。型の指定は必要ないです。出力の際に「” “」は変数を展開しますが、「’ ‘」は文字列として出力します。brタグを使用して改行しています。
~~~php:index.php

元記事を表示

ファサードとは

# Laravel Facade(ファサード)とは

## ファサード作成

### 1 ファサードに登録したい処理(クラス)を作成
ディレクトリーはどこに作成するといったルールもなく、特に指定なし。

“`

元記事を表示

【Laravel】サービスプロバイダとは、使い方や作成方法

プロバイダというのは提供者という意味です。

今回はサービスコンテナにサービスを登録する仕組みを紹介していきます。
※サービスコンテナについてわからない方は以下の記事も見ておくと理解力が深まると思います。

https://qiita.com/div_tomo/items/644a483828fda3b4f434

### 参考記事「[readouble.com](http://readouble.com/)」

https://readouble.com/laravel/8.x/ja/providers.html

サービスプロバイダには大きく分けて2つ

`register()`と`boot()`というメソッドがあって

`register()`の中で`app()`サービスコンテナにサービスを登録して

`boot()`の方で全てのサービスを登録した後に実行したい処理を書くという流れになります。

# サービスプロバイダの使い方

## サービスプロバイダが記述されている場所

> config > app.php
>

“`php
‘providers’ => [

元記事を表示

Laravelでアプリケーションの名前を変更する方法

アプリケーション名は.envファイルに設定します。

.envは環境設定のファイルになります。

## アプリケーション名の変更

早速アプリケーション名の変更方法を紹介します。

> .env
>

“`php
APP_NAME=Laravel



“`

`.env`には色々設定はありますが`APP_NAME=Laravel`の箇所がアプリケーション名になります。

デフォルトだと`Laravel`になっていると思うのでこの`Laravel`の文字を設定したいアプリケーション名に変えるだけで変更できます。

## アプリの設定はどこの箇所で読み込んでいるの?

> config > app.php
>

“`php
/*
|————————————————————————–
| Application Name
|——————————————————————

元記事を表示

Laravel MixとTailwindcssのインストール方法

現在、下記の本を参考にしてLaravelの学習をしており、その中で気づいた点を備忘録として残しておこうと思います。

【参考にした本はこちら↓】
プロフェッショナルWebプログラミング 久保田賢二郎 他著
![laravel本.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1169664/a63531a7-536b-aec1-5cc0-1ec081c3bf23.png)

【備忘録としてのページ範囲】
143ページ~152ページまでについて備忘録として記載します。

## 事前準備(必要なもの)
Node.js

## Laravel Mixとは?
Laravel Mixとは『フロント側の開発を簡単に構築できるライブラリ』のこと。このライブラリをnpmでインストールするとサクッとフロント画面のデザインができてしまうすごいツールです。

公式サイト↓
URL:https://laravel-mix.com/docs/6.0/installation

## Tailwindcssとは?
Bootstra

元記事を表示

OTHERカテゴリの最新記事