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

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

コンテナ上でexecコマンドを実行させる際に陥った罠

最近DockerをREST APIで操作していて色々躓いています。
なんとかChat-GPTの力を借りてやっていっています。

今回は、作業しているコンテナから別のコンテナに対して任意のファイルを実行させようとしたときに詰まったことについて紹介していきたいと思います。

何に詰まったかというと、

自分のコンテナ→相手のコンテナのファイル
の実行でPHPのexec関数を用いて
“`php
exec(‘docker exec コンテナID コマンド’);
“`
としていました。
が、まさかのPermission deniedされてしまいます。対象のコンテナ内のファイルの権限が777ではないため、権限不足になってしまいます。
今回は自分がやった対処法について話したいと思います。

# 素直にDockerのREST APIのexec用のAPIを叩きましょう
Dockerにはコンテナでコマンドを実行させるためのAPIが備わっています。
素直にそれを使いましょう。

使い方は
“`php
//host.docker.internalはホストOS上にコンテナを立てたいときに用います。場合によ

元記事を表示

Laravel + nextjsのdocker環境構築・プロジェクト立ち上げ

## 1.導入環境
– M1 pro macbookpro(os:sonoma:14.4.1(23E224))
– docker desktop

## 2.ディレクトリ構成
“`
├── README.md
├── backend
│   └── Dockerfile
├── compose.yaml
├── db
│   └── my.cnf
├── frontend
│   ├── Dockerfile
│   ├── laravel-next
│   └── package-lock.json
└── mysql
└── my.cnf
“`

## 3.各ディレクトリのDockerfileとCompose.yaml
“`Dockerfile:frontend/Dockerfile
#node.jsを採用
FROM node:20.12.2

#作業ディレクトリの設定
WORKDIR /app
“`
“`Dockerfile:backend/Dockerfile
#php8.3を使用するためのDockerfile
FROM php:8.3-apac

元記事を表示

PHPカンファレンス香川2024に行ってきた話

# 初めに
Akira_0809です。
今回は初めてカンファレンスに参加したので、その話をしたいと思います。
ちなみに、私はPHPを学校の授業で少し触った程度で基本文法も知らない状態で参加しました。
![IMG_1220.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3241738/f8a4ce80-26f0-b1fa-0c27-d70526941d49.jpeg)

# 聞いた講演
### カンファレンスからはじめよ by びきニキ
https://fortee.jp/phpconkagawa-2024/proposal/a623e984-0c15-4c5c-9fb5-84049ff09b96

最初の講演はハックツハッカソンなどで少し接点のあったびきニキさんのを聞きました。
カンファレンスに参加するだけでなくその後の行動に繋げることを発信していました。
この記事を書くきっかけです。
また、他のカンファレンスに参加したいと感じました。

### 泥まみれの技術革新: あなたの[ PHPバージョンアッ

元記事を表示

webアプリ開発 パスワードリマインダー編

# 初めに
webアプリを開発したので、開発中に考えたことをまとめます
今回は記事の詳細とコメント機能についてです。

# 開発環境
macOS Sonoma 14.4.1
CentoOS Stream X_86_64
Apache/2.4.57
PHP 8.3.6
mysql Ver 8.0.36
phpMyAdmin 5.2.1
composer version 2.7.2
Laravel Installer 5.7.1
Laravel Framework 11.0.5

# ソースコード

https://github.com/opatu07/portfolio

# 考えたこと
## パスワードリマインダー
### 実装事例
パスワードリマインダーはログイン時にパスワードを忘れてしまったユーザーのために作りたいなと思って作りました。

「ログイン画面でパスワードを忘れてしまった方へ」を押してもらうとパスワード再設定用のメール送信画面へ移動します。

![login.png](https://qiita-image-store.s3.ap-northeast-1.amazonaw

元記事を表示

LaravelでVSCodeがよしなにメソッドを読み込んでくれない

VSCodeも万能じゃない。

## 背景
### なぜか読み込んでくれないからエラーになることがある
ある日、Laravelで外部サービスログイン機能を実装するために、Socialiteをインストールしたら事件は起こった。
**書き方は正しいのにVSCodeが「そんなメソッドはない」と言ってくる!**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3747518/dbd040fc-3c20-05c7-a50f-a2450ea3834b.png)

でも、動かすとちゃんと想定通りに動く。
そりゃちゃんと公式リファレンスの仕様通りに書いてるからね…。

原因を調べると、どうやら読みはあっていたようで、
**動的なインスタンスにはIDEがうまいこと動いてくれていない**らしい。
[~IDEとは~](https://www.redhat.com/ja/topics/middleware/what-is-ide)

解消法を調べていたところ、明示的にクラスパスを指定できる記法なるものがあるらしい

元記事を表示

Webアプリ開発 カテゴリー、タイトル検索編

# 初めに
webアプリを開発したので、開発中に考えたことをまとめます
今回はカテゴリー、タイトル検索機能についてです。

# 開発環境
macOS Sonoma 14.4.1
CentoOS Stream X_86_64
Apache/2.4.57
PHP 8.3.6
mysql Ver 8.0.36
phpMyAdmin 5.2.1
composer version 2.7.2
Laravel Installer 5.7.1
Laravel Framework 11.0.5

# ソースコード

https://github.com/opatu07/portfolio

# 考えたこと
## カテゴリー検索
### 実装事例
![category.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3682713/b34cbb01-92ba-3815-7a9b-1a60218fe7cf.png)

投稿記事一覧の下にあるカテゴリー検索を押すと投稿記事の一覧とカテゴリー別で記事を確認できる

### ビュー

元記事を表示

【PHP】 paizaスキルチェック 文字の一致 解答

### 問題はこちら
https://paiza.jp/works/mondai/d_rank_skillcheck_sample/diff_str

### 解答

“`answer.php

“`

### Point
今回は特に特筆すべき点はありませんが、文字列という指定がありましたので、==ではなく===を利用しています。
### 参照
https://paiza.jp/works/mondai/d_rank_skillcheck_sample/diff_str
PHPの比較演算子について
https://www.php.net/manual/ja/language.operators.comparison.php

元記事を表示

【PHP】 paizaスキルチェック 一番小さい値 解答

### 問題はこちら
https://paiza.jp/works/mondai/d_rank_skillcheck_sample/min_num

### 解答

“`answer.php

“`

### Point
今回ですが、まず5つの整数を格納する配列を作成して、for文で実際に整数を格納していき、min関数を使って最小値を求めるという手順で書いてみました。

### 参照
https://paiza.jp/works/mondai/

元記事を表示

PHPカンファレンス香川2024に参加してきました #phpconkagawa

# はじめに
[PHPカンファレンス香川2024](https://phpcon.kagawa.jp/2024/)に参加してきました。
[びきニキさんが「みんな、ブログ書こうぜ!!!!」と呼びかけていた](https://x.com/BkNkbot/status/1789273368690376871)ので、久々にQiita記事を書いてみました。

# 聞いた講演とその感想
## PHP コードの実行モデルを理解する
https://fortee.jp/phpconkagawa-2024/proposal/8251b4a5-bb67-4d84-b538-0a018d5cb292

なんとなくPHP-FPMやPHPのCLIを使ってきたので、体系立てて理解する契機になりました。オペコードの中身を初めて見ました。何度も資料を読み込んで深い理解に至りたいです。

## 新米SRE、4つのプロダクトを同時にPHP7.0から8.1へ!!
https://fortee.jp/phpconkagawa-2024/proposal/3746d04f-d0cd-4f02-b603-4132f82c080d

元記事を表示

【PHP】 paizaスキルチェック 足し算 解答

### 問題はこちら
https://paiza.jp/works/mondai/d_rank_skillcheck_sample/addition

### 解答

“`answer.php

“`

### Point
今回の問題では、変数a,変数bが半角スペースで区切られて入力されるという条件があります。fgets関数は一行読み取るという仕様ですので、読み取ったあとそれを分割する必要があります。上記のコードでは、explode関数を使用してスペースで分割しそれぞれの数値を変数に格納しています。

### 参照
https://paiza.jp/works/mondai/d_rank_sk

元記事を表示

【PHP】 paizaスキルチェック 掛け算 解答

### 問題はこちら
https://paiza.jp/works/mondai/d_rank_skillcheck_sample/multiplication

### 解答

“`answer.php

“`

### Point
標準入力についての理解があれば問題ないと思います

### 参照
https://paiza.jp/works/mondai/d_rank_skillcheck_sample/multiplication

元記事を表示

マジックメソッド①

## はじめに

### マジックメソッドとは

あらかじめ特定の役割を与えられたメソッド。
シグネチャ(名前、引数、戻り値の組み合わせ)と呼び出しのタイミングが決められていて、中身(機能)がないため、必要に応じて自分で実装する必要がある。

#### __getメソッド

未定義のプロパティを取得しようとした際

#### __setメソッド

未定義のプロパティを設定しようとした際

##### 参考コード

`to`, `subject`, `message`だけを定義しておいて、それ以外のプロパティは`__get`/`__set`メソッドで処理させている。

“`php:MyMail.php
class MyMail
{
public string $to;
public string $subject;
public string $message;

private array $headers = [];

public function __set(string $name, string $value)
{

元記事を表示

【AtCoder Beginners Selection】初学者がPHPで解いてみた

# はじめに

AtCoder Beginners Selection をPHPで解いてみました。
これまではPythonを主に学習していましたが、エンジニアとして転職が決まり転職先でPHPを使用するため学習しています。
基本的な文法が習得できているかの確認のために行いました。

そもそも実務未経験な上、PHPは入門書を一通り学習した程度のため拙いコードだと思います。
ご指摘があれば、コメント欄で頂けると幸いです。

# 解答
### ABC086A – Product

“`PHP

“`

### ABC081A – Placing Marbles
“`PHP

“`

### ABC081B – Shift only
“`PHP

元記事を表示

Laravel フラッシュメッセージを実装してみる🧑‍💻

# はじめに🐯
※ここに記すことは、個人の試行錯誤体験記です。記載する情報が必ずしも正しいとは限りません。投稿時点での個人の最適解です。また、間違った認識も多くあると思います。その時は、優しく指摘いただけますと幸いです。
# こんな方にオススメです🙆‍♂️
– 駆けだし始めた初学者
– フラッシュメッセージってなんだっけ?
– ChatGPT使ったけどいまいちわかんない
# なぜ、実装したのか🛠
– 現役エンジニアのメンターサービス受講中。そこのカリキュラムである、チーム開発の担当タスクのため
# フラッシュメッセージについて💡
そもそも、フラッシュメッセージを知らなかったのでメンターに質問したがはっきりと認識できなかったので、調べて理解度を高めました。
#### 個人的なサマリー💁‍♂️
– ウェブアプリケーションにおいてユーザーが行った特定のアクションの結果に関する一時的な通知(フォームの送信やデータの更新など)
– 通常、次のページの読み込み時に一度だけ表示され、その後自動的に消えるように設計されている
– UXを向上させるための重要なツール
# 特徴🚥

#### 一時性

元記事を表示

【AtCoder】備忘録ABC347-B

## 問題

https://atcoder.jp/contests/abc347/tasks/abc347_b

PHPで解いています。
B問題はネストした繰り返し処理が肝のよう。

## 解答

“`php
→各部分文字列を集合(セット)に格納し、最終的にその集合の要素数を出力する
:::

“`ph

元記事を表示

Undefined type ‘App\Controller\Request’というエラーの対処法

# 問題のコード
“`php
get(‘name’);
$pass = $request->get(‘pass’);
$result = ‘

元記事を表示

composerで作成したプロジェクトのサーバー起動時エラーが出る

# はじめに
“`
php bin/console server:run
“`
上記のコマンド実行時にエラーが出たので解決方法をここに綴ります。

# 試したこと
#### website-skeletonプロジェクトの作成
“`
composer create-project symfony/website-skeleton プロジェクト名
“`
#### プロジェクトのフォルダ内に移動
“`
cd プロジェクト名
“`
#### サーバーの起動
“`
php bin/console server:run
“`
上記のコマンドでエラが発生

:::note alert
Command “server:run” is not defined.

Did you mean one of these?
dbal:run-sql
server:dump

元記事を表示

【PHP】マイナーフレームワーク「Flow」を試してみる~ViewHelper編~

# 初めに
Flowでは、Fluidというテンプレートエンジンが採用されており、ViewHelperと呼ばれる機能が使えます。今回は、このViewHelperについて解説していきます。

# ViewHelperとは
[こちら](https://qiita.com/nnhkrnk/items/06631a2ac57c6465696b#%E3%82%BF%E3%82%B0%E3%81%AE%E5%AE%9F%E6%85%8B)の記事で、ViewHelperを定義することでHTML内で使える独自のタグを作成することができると紹介しました。今回は、独自のViewHelperを作成してみようと思います。

## 使い方

作り方は簡単です。
以下のような形で書きます。

“`php

元記事を表示

macOSでphpコマンドを使用できるようにする

# 前提
homebrewをインストールしてあること

# 現状
“`
$ php -v
zsh: command not found: php
“`
command not found: phpと出ます。

# やり方
下記コマンドを実行し、homebrewを最新化
“`
brew upgrade
“`
下記コマンドを実行し、PHPを手動でインストールする。
“`
brew install php
“`

下記コマンドを実行し、PHPのversionとコマンドを使用できることを確認
“`
php -v

PHP 8.3.7 (cli) (built: May 7 2024 16:35:26) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.3.7, Copyright (c) Zend Technologies
with Zend OPcache v8.3.7, Copyright (c), by Zend Technologies
“`

PHPはほとんどのmacOSシステムにプリインストールされているため

元記事を表示

Laravelのキャッシュについて

## キャッシュとは
動作を高速化するため利用されます。

## キャッシュの作り方
例えば、`config`ディレクトリにある設定ファイルのキャッシュを作成する場合
“`bash
php artisan config:cache
“`

を実行することで作成されます。
他にもルートのキャッシュやviewのキャッシュなど、様々な種類があります。

## 何が起きているのか
上記のコマンドでキャッシュ作成コマンドが実行されると
`/bootstrap/cache/config.php`
というファイルが作成されます。これこそがキャッシュの正体です。

このファイルの中身は、主に`config`ディレクトリ内のファイルの中身が**全て纏められたもの**であり、このファイルが作られると今後はこの設定を参照するようになります。

“`
.
├── app
├── bootstrap/
│ ├── cache/
│ ├── config.php ←キャッシュファイル
│ ├── …
├── config/ ←このディレクトリの中身全てが纏められる

元記事を表示

OTHERカテゴリの最新記事