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

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

DockerでPHP+Apacheの環境を構築する

## はじめに
この記事では、Docker環境を構築するための準備から、PHP+ApacheのWebサーバー上で`”Hello World!”`を表示するまでの手順を紹介する。

#### 【 環境情報 】
**PC**:Apple M1 Pro
**OS**:Sonoma 14.4
**Docker**:27.2.0
**PHP**:8.2.23
**Apache**:2.4.62

## 1. Docker Desktopをインストールする
(1) [公式サイト](https://matsuand.github.io/docs.docker.jp.onthefly/desktop/mac/install/)からDocker Desktop for Macをダウンロードし、Applicationsフォルダに追加する。

(2

元記事を表示

Laravel 11 とりあえずAPIサーバーを立ててみる。

バックエンドを人に任せているが、せめてAPIだけでも使えるようになってないとフロントエンド開発しにくいなあと言うことで、簡易的にAPIサーバーを立てて値の取得することに。

とりあえずGET前提で試してみる。
## 一応環境
Laravelバージョン 11
php 8系

## プロジェクト作成
“`shell
laravel new api-server
“`
## Controller作成
今回はApiControllerという名前で作成する。

“`shell
php artisan make:controller ApiController
“`
app/http/controllers/ApiController.phpが作成される。

## メソッド作成
ApiControllerを開いてメソッドを追加する。
“`php
public function apitest(){
return response()->json([‘message’ => ‘hello world!’]);
}
“`
## ルート設定
routeにapi.phpを新規作成す

元記事を表示

【個人開発】自分だけのベストアルバム一覧を作れるサービスを開発しました

### 概要
今まで聴いてきた音楽の中から「自分だけのベスト10」をアルバムアートを表示しつつ一覧にできるサービスを作成しました:v::headphones::headphones:

個人的に使うだけなのでリンクは特に掲載しません。

実際に使用しているキャプチャも最後まで載せたいところですが、アルバムアートは著作権的にアウトだと思いますので、途中までになります。
![3capture.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3877267/c1d21ae9-4f28-8a70-4144-dd66f73c498d.gif)

実際にはこのあとアルバム一覧が表示→アルバムを選択したらアルバムアートが一覧で表示できます。

### 開発背景
友人とよく「◯◯ベスト10」というような話をします。ゲームだったり映画だったり…
それぞれの好きなものがわかりますし、色んな視点を聞くことができるので個人的にはすごく楽しい話題だと思っています。
この話をするときに視覚的な情報も一緒にあるとよりイメージつきます

元記事を表示

Dockerを使ったLaravel8の環境構築

# やりたいこと
– Docker 及び Compose のインストールをしたい
– Docker を起動したい
– 起動した Docker 上で localhost のサーバーを立ち上げたい

# 前提
– OS
– macOS Sonoma 14.6
– 各バージョン
– PHP 8.2.10
– Laravel8
– Laravel8 のプロジェクトは作成済み
– 参考:https://qiita.com/s-y0001/items/60d9ee491264486b7454#%E5%89%8D%E6%8F%90

# Docker Desktopのインストール
https://matsuand.github.io/docs.docker.jp.onthefly/desktop/mac/install/

私の場合は「IntelチップのMac」からDocker.dmgをダウンロードし、インストール手順を実施しました。
インストールが完了しアカウント登録まで済むと Docker Desktop の起動に成功します。 

ちなみに、Docker Desk

元記事を表示

PHP技術者初級認定試験のための基礎振り返り③

# ファイル操作
**1. ファイルの読み込み**
PHPでは、fopen、fread、fgets、file_get_contentsなどの関数を使用してファイルを読み込むことができます。

file_get_contents
file_get_contents関数は、ファイル全体を文字列として取得します。
“`

“`
**2. ファイルの書き込み**
ファイルにデータを書き込むには、fopen、fwrite、file_put_contentsなどの関数を使用します。

file_put_contents
file_put_contents関数は、ファイルにデータを書き込みます。ファイルが存在しない場合は新しく作成し、既存のファイルがある場合は上書きします。
“`

元記事を表示

PHP技術者初級認定試験のための基礎振り返り②

# 文字列操作
**1. 文字列の結合**
PHPでは、文字列の結合にドット演算子(.)を使用します。
“`

“`
**2. 文字列の長さを取得する**
strlen関数を使うと、文字列の長さを取得できます。
“`

“`
**3. 部分文字列を取得する**
substr関数を使うと、文字列の一部を抽出できます。
“`

“`
**4. 文字列の検索と置換**
文字列の中の特定の部分を検索したり、置換したりするためにstrposと

元記事を表示

Docker CentOS7にPHP7.1+MySQL+Apache環境構築

## 概要
Dockerでタイトルの環境を構築する設定ファイルを残しておく。
CentOS7上に構築すると躓くところが多かった…

## 環境
– OS
– CentOS 7
– 言語
– PHP 7.1.
– DB
– MySQL 8.0.32

## 設定ファイル

### docker-compose.yaml
“`docker-compose.yaml
services:
mysql:
image: mysql:8.0.32
container_name: mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: mysql
MYSQL_PORT: 3306
ports:
– 3307:3306
volumes:
– type: volume
source: mysql_data
target: /var/lib/mysql
– type: bind

元記事を表示

PHP技術者初級認定試験のための基礎振り返り

# PHPとは何か
PHPは「Hypertext Preprocessor」の略で、動的なウェブページを生成するためのサーバーサイドスクリプト言語です。PHPはHTMLに埋め込んで使用でき、データベースと連携することで、インタラクティブなウェブアプリケーションを作成することが可能です。

# PHPの基本構文
***1. PHPタグ***
PHPコードはの間に記述します。以下は基本的なPHPタグの例です。
“`

“`
**2. 変数とデータ型**
PHPでは、変数は$記号で始まります。変数に値を代入することで使用します。PHPの主なデータ型には以下のようなものがあります。

整数型 (integer): 整数値を扱います。
浮動小数点型 (float): 小数点を含む数値を扱います。
文字列型 (string): 文字列を扱います。
配列型 (array): 複数の値を一つの変数に格納します。
ブール型 (boolean): trueまたはfalseの値を持ちます。
例:
“`

元記事を表示

初めての個人開発と振り返り

# はじめに
約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/

元記事を表示

OTHERカテゴリの最新記事