PHP関連のことを調べてみた

PHP関連のことを調べてみた
目次

初めての成果物作成と振り返り

# はじめに
約2ヶ月の制作期間を経て、Webアプリケーションのデプロイがひとまず完了しました。
今年の7月中旬からプログラミングスクールに通い、PHPやLaravelといった技術を習得しながら進めたプロジェクトです。

私はもともとWeb系言語未経験で、個人開発の経験もありませんでした。そのため、成果物を完成させるためには、疑問が生じた際にすぐに質問できる環境が必要だと感じ、プログラミングスクールに通うことを決意しました。

この記事では、自分の理解を深めるためにも、今回の成果物であるWebアプリケーションについて紹介します。制作過程で学んだことや、直面した課題とその解決方法についても触れていきたいと思います。

# 目次
1. [自己紹介](#自己紹介)
2. [アプリケーション概要](#アプリケーション概要)
3. [使用技術](#使用技術)
4. [制作過程と内容](#制作過程と内容)
5. [振り返り](#振り返り)
6. [おわりに](#おわりに)

# 自己紹介
地方国立大学院工学専攻情報系修士1年
プログラミングに関わる経歴
– 大学の講義にてJava、Python、S

元記事を表示

Laravel の 404 エラーページでログイン状態が正しく表示されない問題の解決

## 問題の発生
Laravel 10 で構築されたプロジェクトにおいて、未定義のルートにアクセスした際に 404 エラーページへ遷移する際、ログイン状態が正しく表示されない問題が発生。
具体的には、ログインしているにも関わらず、セッションが開始されていなかった。

## 結論
フォールバックルートで対応できました。
“`php
Route::fallback(function () {
abort(404);
});
“`

## 原因の調査
この問題は、404 エラーが発生した際に、`StartSession` ミドルウェアが実行されず、セッションが開始されないことが原因でした。
`StartSession` ミドルウェアは、通常、`web` ミドルウェアグループに含まれており、定義済みのルートにアクセスした際には実行される。
しかし、未定義のルートにアクセスした場合は、`web` ミドルウェアグループが適用されないため、セッションが開始されない。

## 解決策の検討

### 1. 例外ハンドラでの対応
当初は、例外ハンドラ (`app/Exceptions/Ha

元記事を表示

19個のLaravelパフォーマンス最適化必須テクニック

この記事では、Laravelアプリケーションのパフォーマンスを大幅に向上させるための19のテクニックを詳しく探ります。以下にそれぞれのテクニックを説明します。
![20240918152752.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3884228/25f43d2d-3eac-b3cf-4621-60519f6d03a5.png)

### 開発環境ツールを導入する
ServBayは、開発者のために設計された一体型開発環境管理ツールで、開発環境の構築と維持を簡素化します。PHP、Node.js、MariaDB、PostgreSQLなどの多くの人気開発言語やデータベースを統合しており、開発者はプロジェクトのニーズに応じて適切な技術スタックを柔軟に選択できます。このツールは、ローカル開発でカスタムドメインやトップレベルドメイン(TLD)を使用することをサポートし、これらのドメインに自動的に無料のSSL証明書を生成することで、開発プロセスの安全性を高めます。

Laravelプロジェクトのデプロイニー

元記事を表示

sentence-transformers を用いた情報検索システムについて

### 開発の動機

社内の規則などを記述した PDF のドキュメント群があり、それを一括して検索できるシステムを作ろうと考えた。

### 処理の手順

#### イントラウェブサイトから PDF ファイルを DL する工程。

今回、ウェブロボットのように、あるドキュメントからその中のリンクをたどって新しいドキュメントをダウンロードすることはしない。与えられた複数の URL の PDF ドキュメントを毎日ダウンロードする。

#### PDF をテキストファイルに変換する工程。

ダウンロードした PDF ファイルをテキストファイルに変換するのには、pymupdf を使う。

#### 変換したテキストファイルを sentence-transformers に読みこませる文章にする工程。

変換したテキストファイルは、一行が文章であったり、言い回しで完結するとは限らない。そこで、PDF から変換したテキストファイルを、spacy と ja-ginza を用いて、一行が文章になるように修正する。

#### テキストファイルを sentence-transformers に読み込ま

元記事を表示

【Wordpress】カスタム投稿をカテゴリーと投稿日で絞り込む機能を自作する

## 完成イメージ
投稿日とカテゴリー2つの条件で投稿を絞り込むことができます。
それぞれ片方でも、両方の条件で複合的に絞り込むこともできます。

![画面収録 2024-09-15 19.42.56 (1).gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3783222/caed83b4-22bf-e139-b8ef-7acf59a1f272.gif)

## 実装のポイント
wordpressを多少理解できている前提で、この実装の肝となるポイントを先にご紹介します。

– **サブクエリに「“`date_qeury“`」と「“`tax_query“`」という2つの条件を設定する**
– **検索ボタンを押した際に、GETメソッドで上記2つのクエリに必要な投稿日とカテゴリーの情報をURLパラメータから取得する**

## 前提条件・準備
– 実装する検索機能についてはプラグインを使用せず自作する
– カスタム投稿、カスタムタクソノミーはAdvanced Custom Fieldsを使用

元記事を表示

sendmailでサーバーと同じドメインのメールアドレスへのメール送信に失敗する場合の対応

# 状況

Webサーバー`yukihirog.jp`に設置したPHPからsendmailを経由して`mail@yukihirog.jp`にメール送信すると失敗してしまう。

しかし、`mail@anotherdomain.com`など、**他のドメインのメールアドレスへのメール送信は成功**する。

そのため、**サーバーと同じドメインへのメール送信のみが失敗**していると考えられる。

また、`/var/log/maillog`に`User unknown`が記録されていた。

(以降、`yukihirog.jp`の部分は自分のドメインに読み替えてください)

# 原因

メール送信時、設置サーバーと同じドメインの場合は外部を経由せずに自サーバー内で解決されるらしい。

**実際のメールサーバーをGメールなどで運用している場合**、自サーバー内を探しても配信先が見つからずに失敗、あるいは見つかってもユーザーが利用しているアプリなどに**届かない**ことになる。

# sendmailの確認

“`shell:sendmailが入っているかの確認
which sendmail
#

元記事を表示

仮想化ソフトを使ってMac環境にLinuxを入れて動的サーバーを立てる

# 備忘録自分の学習用
## 学習の目的
– 動的コンテンツのWebサーバーを建てること
– Webサーバーがどのように動いているのかを学ぶ
## 学習の流れ
### 1. サーバー構築作業
– ローカルマシンに仮想環境(UTM)を導入
– 仮想環境にLinux(ubuntu)を導入
– Linux補助ツール導入
– nginx導入とphpファイル読み込み設定
– PHPとPHP-fpmインストール
– PHPファイルの作成と導入
– systmctlのnginxを再起動
### 2. 実装中に出てきた不明点をまとめて調べる

## UTM導入
– [UTM](https://mac.getutm.app/)は[QEMU](https://e-words.jp/w/QEMU.html)というオープンソースのマシンエミュレーターをベースとした仮想化ソフトウェア。macOS上でx86/x64用のアプリケーションを実行することが可能。
– マシンに直接OSを入れるわけではないので、ローカル環境が汚れない

元記事を表示

2025年、PHPはまだ学ぶ価値があるのか?

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3861208/8fa6cc80-095d-5edf-8350-63183c25f36f.png)

2025年が近づくにつれ、多くの新しいWeb開発者が重要な問いを考えています:PHPを学ぶ必要があるのでしょうか?

Web開発の分野では、PHPは過去数十年にわたり重要な地位を占めてきました。その影響力は無視できません。現在、75%以上のウェブサイトがWordPress、Drupal、Joomlaなどのプラットフォームを使用しており、これらはすべてPHPを基盤としています。しかし、新たなプログラミング言語やフレームワークの台頭に伴い、PHPの未来は挑戦に直面しているように見え、その学習価値も疑問視されています。

この記事では、2025年にPHPを学ぶことの利点と欠点を深く探り、その未来の発展動向を分析します。

### 1. PHPの持続的な重要性

Python、JavaScript、Rubyなどの新興言語が急速に台頭しているにもかかわ

元記事を表示

『良いコード/悪いコード』第八章のJava言語で書かれたサンプルコードをPHPに書き直す

## 目的
『良いコード/悪いコード』第八章に記載されているサンプルコードのうち、以下の❶~❸をPHP言語のコードに直すことで、更なる理解を深める

❶定数クラス
❷通常割引価格クラス
❸夏季割引価格クラス

# ❶定価クラス
“`php
// ①本書で登場するサンプルコード
class RegularPrice {
final int MIN_AMOUNT = 0;
final int amount;
// Javaではクラス名と同じ名前のメソッドをコンストラクタとして使用できる
RegularPrice(fainal int amount) {
// JavaはPHPよりも静的な構文がしっかりしており、直接アクセスできる。
if (amount < MIN_AMOUNT) { throw new ILLegalArgumentException("価格が0以上でありません。"); } this.amount = amount; } } // ②PHPに

元記事を表示

PHP8.1 Enums 導入

PHP8.1のEnum導入方法を学習の為、アウトプットします
# 導入の経緯
今までプロジェクトではBenSampo/laravel-enumを使用してましたが、PHP8.1でEnumsが実装され、BenSampo/laravel-enumのリポジトリで

:::note info
「Using this library is no longer recommended, especially for new projects. PHP 8.1 supports enums natively.」
このライブラリの使用は、特に新しいプロジェクトでは推奨されなくなりました。PHP 8.1 は enum をネイティブにサポートします。
:::
と書かれていた為、PHP8.1のEnumsを導入することにしました
# 導入方法
enum と宣言して列挙型を宣言する
case を使って列挙する
~~~Fruit.php

元記事を表示

#57 isset() vs empty() What’s the differences?

# isset() vs empty() What’s the differences?

While start learning PHP, there are always some points which is confusing. Today I would like to make a simple note to descript the differences between `isset()`, `empty()`, `if()`

## What is isset()?

>Determine if a variable is declared and is different than null

Simply saying it checks whether a variable is set and NOT equal to `NULL`

## What is empty()?

>Determine whether a variable is empty

All the variables including ` `, `0`,`false` and `

元記事を表示

テスト済みで実証済み!生産性を向上させる6つのツール!

## 情報管理

### [Document360](https://document360.com/)
**概要**: Document360は、ドキュメントの保存、共有、編集、ディスカッションを統合したチームコラボレーションおよびナレッジ管理プラットフォームです。

![画像説明](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/52n6i52dor5zycd5stq0.png)

**特徴**:

– 複数ユーザーによるリアルタイム編集とディスカッションをサポート。
– 強力な検索および分析機能により、ユーザーは必要な知識や情報を迅速に見つけることができます。

### [ChatGPT](https://openai.com/)
**概要**: ChatGPTは、OpenAIによって開発されたAIチャットボットで、強力な自然言語処理機能を備えています。これ以上の紹介は不要でしょう。

![画像説明](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/

元記事を表示

【PHP】nullの扱い方

nullに対する四則演算や型変換を実行すると0に変換されてしまうケースがあり、条件分岐などが想定通りにならない場合がある。
その場合にどうすればよいか、もしくはnullをどのように扱えばうまくいったかを書いていく。
# nullどうしの加算、減算、乗算
“`php
$plus = null + null;
$minus = null – null;
$multiply = null * null;
“`
“`php
// nullにはならず、全て数値型の0に変換される
int(0)
int(0)
int(0)
“`

# nullどうしの除算
“`php
$division = null / null;
“`
“`php
// エラーが発生
PHP Fatal error: Uncaught DivisionByZeroError: Division by zero in XXX
Stack trace:
#0 {main}
thrown in XXX
“`
# nullと数値の四則演算
“`php
$plusOne = null + 1;

元記事を表示

Laravel2024年Laravel開発者に必須のツールトップ10

Laravelは、その優雅な構文と強力なエコシステムにより、PHPフレームワークの中で際立っています。経験豊富な開発者でも新参者でも、適切な開発ツールを選択することは、生産性を向上させ、ワークフローを効率化し、高品質なWebアプリケーションを構築する上で重要です。2024年に向けて、Laravel開発者がその開発の旅を高めるために考慮すべき10の必須ツールを紹介します。
![20240918152752.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3878716/19a0f467-14c2-0684-527f-82845cc845a3.png)

### 1.**[Laravel Forge](https://forge.laravel.com/)**
Laravelの公式デプロイメントツールであるLaravel Forgeは、サーバー設定を簡素化し、デプロイメントを効率的かつシームレスにします。DigitalOcean、AWS、Linodeのいずれを選んでも、Forgeはすべてを処理し、サーバー管理

元記事を表示

Fuel\Core\PhpErrorException [ Fatal Error ]: The configured locale(s) “en_US” can not be found on your system.

Fuel\Core\PhpErrorException [ Fatal Error ]:
The configured locale(s) “en_US” can not be found on your system.

fuelPHPを設置する段階でもうローカルで開くことさえできないエラーが出されます。
(vscode, xampp使用)

「http://localhost/[プロジェクトフォルダ名]/public/」 
を開こうとしたらエラーが出ます。

対処法です。

fuel/app/config/config.php をひらきます。

そこから「language」を検索します。

/**
* The default language.
*/

// ‘language’ => ‘en’,

/**
* Fallback language when file isn’t available for default language.
*/

// ‘language_fallback’ => ‘en’,

/**
* PHP set_

元記事を表示

【AWS】EC2 インスタンス上で GitHub からクローンした PHP アプリを動かす

# はじめに
この記事では、EC2 インスタンス上で GitHub からクローンした PHP アプリを動かす方法を記載します。

# 開発環境
開発環境は以下の通りです。

– Apache 2.4.62
– PHP 8.3.7
– Git 2.40.1

# 事前準備
以下の2点を事前準備しておきます。

## PHP アプリの作成
以下のファイルを持つ PHP アプリを GitHub 上に作成します。

“`index.php




PHP Samples

PHP Samples

Hello PHP!




“`

“`clock.php

“`

## EC2 インスタン

元記事を表示

複数行を一括でINSERTする

今日から始める `PHP(主にCodeIgniter3) + MySQL` のメモ書き。

もっと早く始めていれば良かったと反省。

## INSERTの効率化

まず初めに、1件ずつINSERTするのはパフォーマンスが良くありません。
このことは一般的な知識として知っておいた方が良いです。
[MySQLのINSERTの効率化](https://qiita.com/jkr_2255/items/12081b3c066d371516f5)

## CodeIgniterでは?

[insert_batch()](https://codeigniter.jp/user_guide/3/database/query_builder.html#CI_DB_query_builder::insert_batch)を使用する。
注意点などは下記の投稿を参考に。
[CodeIgniterでinsert_batchする場合のポイント](https://qiita.com/jkr_2255/items/8ef8372969da0f574fa4)

## 大量データを処理する場合

INSERTクエリは

元記事を表示

「CakePHP超入門」を読んで詰まったところ

## はじめに
2018年発行の[「CakePHP超入門」](https://www.shuwasystem.co.jp/author/a180749.html)を2024年8月に勉強しました。この時、最新バージョンに対応しておらず、何箇所か詰まりました。これは、その時のメモです。お役に立てれば良いと思います。
なお、[CakePHP書籍の「CakePHP 超入門」で詰まったところ](https://zenn.dev/yyykms123/articles/2019-04-09-cakephp-trouble
)を参考にしました。正直言って、こちらのページの方が役に立つと思います。

# 使用環境
+ MacBook Air(M1 2020)
+ macOS 14.6.1
+ MAMP Version 6.9
+ PHP 7.4.33
+ MySQL Version 5.7.39
+ CakePHP Version 3.10.5

## 準備
書籍では[XAMPP](https://www.apachefriends.org/jp/index.html)が使用されていますが、M1チップに

元記事を表示

PHPでSQL文を書いて実行するとなんかエラーが出ていた話

## はじめに
前にPHPでSQL文を変数に代入して実行しようとしていると、SQL文はあっているはずなのになぜか“`HTTP ERROR 500“`が返ってきていました。

##### 原因のコード
“`php:PHP
$sql = “INSERT INTO sample_table (id,name,age,birthday) VALUES ({$_POST[‘id’]},”{$_POST[‘name’]}”,{$_POST[‘age’]},”{$_POST[‘birthday’]}”)”;
“`

## 原因
原因はおそらく、“`”{$_POST[‘name’]}”“`のダブルクォーテーションがあることで、この時点で変数の値が終了しているという判定になったからだと考えられます。

## 解決方法
“`”{$_POST[‘name’]}”“`や、“`”{$_POST[‘birthday’]}”“`のダブルクォーテーションをシングルクォーテーションに置き換えることで解決しました。

“`PHP:PHP
$sql = “INSERT INTO samp

元記事を表示

PostgreSQLにPHPで通信してみた

## はじめに
インターンで環境構築したサーバーを使ってデータベースと通信する機会がありました。PostgreSQLを用いてデータベースを作成する作業は以前[記事](https://qiita.com/akito-0520/items/041ec30f01128ad0b3e3 “PostgreSQLを使ってみた”)にまとめたので、この記事ではその先の実際に通信する作業をまとめたいとおもいます。
 初めての経験だったので無駄なことやおかしなことを言っているかもしれませんがもしあった場合はコメント欄で優しく指摘していただけると幸いです。

### 実行環境
– OS: AlmaLinux 8.10
– PostgreSQL: 12.20
– PHP 8.0.30

## 実際に使ってみる
前回でPostgreSQPにデータベースを作成することはできたので今回はPHPに入りたいと思います
まずはrootディレクトリから“`/var/www/html/“`ディレクトリにPHPファイルを作成します。“`cd“`コマンドを使用して“`html“`ディレクトリに移動して、今回は“`te

元記事を表示

OTHERカテゴリの最新記事