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

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

[Laravel10] Laravel Sailを使用せず、DockerComposeを自前で用意する

# はじめに

Laravel Sailを使用せず、自前でDocker Compose環境を構築します。

※ なお、公式ではLaravel Sailの使用が勧められております。

https://readouble.com/laravel/10.x/ja/installation.html

本記事は暫定版であり、今後、Laravelの実装学習が進むにつれ更新していく予定です。

# Laravel Sailについて

Laravelのプロジェクトを開始するにあたり、開発環境としてLaravel Sailを使用するか悩みました。

SailのPHPコンテナのDockerfileを確認してみると、`artisan serve`経由でPHPのビルトインサーバーを使用しているようで、apacheやnginxなどのWebサーバーのコンテナは存在しませんでした。

https://www.php.net/manual/ja/features.commandline.webserver.php

>このウェブサーバーは単一のシングルスレッドプロセ

元記事を表示

【PHP】配列からIDだけを取り出したい

# はじめに

こんにちは、エンジニアのkeitaMaxです。

今回はなにをやりたいかというと、
“`php
$array = [
[“id” => 1, “name” => “taro”],
[“id” => 2, “name” => “jiro”],
[“id” => 3, “name” => “saburo”]
];
“`
こんな配列からidの部分だけ抜き足して
“`php
$array = [1,2,3];
“`
みたいなidだけの配列にしたいということです。

# 試したこと① foreach

まずは無難なforeachで試してみました。

“`php
$array = [
[“id” => 1, “name” => “taro”],
[“id” => 2, “name” => “jiro”],
[“id” => 3, “name” => “saburo”]
];

$result = [];
foreach($array as $value){
array_push($result, $value[‘id

元記事を表示

Stackプログラミング言語を実行できるJSライブラリを作った

## 概要

こんにちは!
私がコミュニティで開発しているスタック指向型の強力なスクリプト言語「Stack」を、PHPみたいにHTMLに組み込んで動かせたら便利だと考えて、Webアセンブリ版Stackプログラミング言語を実行するJSライブラリを開発しました。

https://qiita.com/KajizukaTaichi/items/1c3e3ee08d102bfd576c

# コード紹介

“`javascript
import init, { run_stack } from ‘./pkg/web_stack.js’;

init().then(() => {
window.run_stack = run_stack;

// ページの読み込みが完了したら実行する処理
// class が stack である要素を全て取得
const stackElements = document.getElementsByClassName(“stack”);

// 各要素に対して処理を行う
for (let i = 0; i < st

元記事を表示

Laravel9でLaravel Excelインストール時に、maatwebsite/excelバージョン依存でエラー

Laravel9で、Laravel Excelをインストールしようとしたら、エラーが起こったので、残す。

# 環境
– Rocky Linux release 9.3
– PHP 8.0.30
– Laravel 9.52.16

# 手順
## Laravel Excel インストール
“`
$ composer require psr/simple-cache:^2.0 maatwebsite/excel
“`
“`
$ composer require maatwebsite/excel
“`
## `config/app.php`のproviders, ailiasesに追記
“`config/app.php
‘providers’ => [
/*
* Package Service Providers…
*/
Maatwebsite\Excel\ExcelServiceProvider::class, // 追記
],
‘aliases’ => Facade::def

元記事を表示

composer install と composer update の違い

# 概要
`composer install` と `composer update`についていつも迷うのでまとめる。

## composerとは
– Composerは、PHPの依存関係管理ツールです。PHPプロジェクトで使用されるライブラリやパッケージの依存関係を管理し、自動的にそれらをダウンロードしてインストールする。
– これにより、プロジェクトの開発や管理が簡単になる。

## composer install
– `composer.json`ファイルからすべての依存関係をインストールする。

– 依存関係が`composer.lock`ファイルにある場合、`composer.lock`にリストされているバージョンをインストールする。

– `composer.lock`ファイルが存在しない場合、最新のバージョンがインストールされ、インストールされた依存関係の情報は`composer.lock`ファイルに保存される。

## composer update
– すべての依存関係を最新のバージョンに更新する。

– `composer.json`ファイルの`r

元記事を表示

Docker×Laravel×MySQLでHPを作ったらデータが全て消えた話

## 技術選定の理由
– Dockerの勉強のため
– Laravelを使って何か作ってみたかった

## 発生したこと
ホームページには自作CMSを用いてブログ機能をつけた。
デプロイから1日程度は問題なく見ることができたが、**データがテーブルごと吹っ飛んだ**
管理アカウントも消えている…

仕方なくもう一度サーバーにログインしアカウント作成。
しかし、また消える….

# 解決策
以下の記事を参考にしながら、なんとか自力でやってみた

https://kiyobl.com/docker-mysql-persistence/

## コンテナ構成(docker-compose)
コンテナは以下のように構築した
“`yaml
version: ‘3’

services:
app:
container_name: mapworks_hp
build:
context: .
dockerfile: Dockerfile
ports:
– “8000:8000”
– “5173:5173”

元記事を表示

【PHP8.2】PHP8.2でジェネリクスが導入された

[PHP 8.2 新機能の概要とコード例](https://www.fushigiame.jp/article/9)

![01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26088/e3f09638-36a7-344d-28f1-c2fb980e48a3.png)

:::note
4. ジェネリクス
PHP 8.2 では、ジェネリクスのサポートが導入されました。
ジェネリクスを使用すると、コードの再利用性が向上し、型安全性も確保されます。

“`php
interface Collection {
public function add(T $item): void;
public function get(int $index): T;
}

class StringCollection implements Collection {
// …
}

$stringCollection = new StringCollection();
$s

元記事を表示

PHP でヘッダーを ‘Content-Type’:’application/json’ に指定して POST したら意図しないリダイレクトでデータが消えて困った話

## 環境

– PHP
– Apache

## 解決策

POST 先に指定している URI の末尾にスラッシュをつける。

`localhost:3000/json` -> `localhost:3000/json/`

## 理由

Apache では設定によって URI に [Trailing Slash](https://wa3.i-3-i.info/word11910.html) と呼ばれる末尾のスラッシュが無い場合、末尾のスラッシュが存在する URI へリダイレクトさせられます。

このリダイレクトによって `’Content-Type’:’application/json’` 指定で POST した値が消えていました。

この設定は、 [DirectorySlash ディレクティブ](https://httpd.apache.org/docs/2.4/ja/mod/mod_dir.html) と呼ばれるものです。

– Trailing Slash 参照元 : https://wa3.i-3-i.info/word11910.html
– DirectorySla

元記事を表示

ファイル分割アップロード

“Vue.js“と“Laravel“によるSPAを構築しました。

“Vue“から“Laravel“へのファイルアップロード機能を実装しており、
大きいサイズのファイルをアップロードする際に少し苦労したので、
その備忘録としてここに残します。

# 実装方法
初めは1つのファイルをフロントエンドからバックエンドへそのまま送る予定でした。

しかし、5GBほどのファイルをアップロードすると、通信環境によってはタイムアウトでエラーが発生し、設定値等を変更しても改善しませんでした。

なのでフロントから分割してアップロードし、
バックで統合、保存する方式で実装することに決めました。

# Vue.jsの実装
“は **multiple** に設定しているので複数選択可能です。
それぞれのファイル毎に“uploadChunks()“を呼び出します。

実際のソースでは“upload()“が呼び出されるとバリデーションチェック等を行っています。

“`js
const upload = () => {

/* バリデーションチェック等実装 *

元記事を表示

【PHP】そういうことか!オブジェクト指向!

## まず初めに
まだオブジェクト指向を学習し始めて一週間の僕が備忘録的に残すものなので、何か間違いがありましたら優しく教えていただけますと幸いです:pray_tone1:

## 現段階でのオブジェクト指向の理解
ヒト(赤ちゃん)→ウンチする
![baby_role_towel_utsubuse.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3638476/ee721458-9fdc-24e1-7b40-9ea3aefbcc9e.png)

ヒト(女性)→ウンチする
![otaku_girl_fashion_penlight.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3638476/1fe3e7f8-e653-6c12-68ad-ed14a32c60d5.png)

ヒト(おじいさん)→ウンチする
![magonote_ojiisan.png](https://qiita-image-store.s3.ap-nor

元記事を表示

「独学エンジニア」レッスン1

# レッスン1
今回はレッスン1にて学習したことになります。
## 学習するにあたって目指すゴール
このサービスでの目指すべきゴールは「エンジニアとして自走できるレベルで就職する」ことです。
僕はありがいことに既に就職しており、現場にも参加させていただいているので今回は「エンジニアとして自走しスキルアップすること」をゴールにします。
### そもそも自走するとは
 ①自己学習を継続できる
 ②課題に対して自分なりに調査し解決できる
 ③障害や問題が発生した際に最低限の対応ができる
これら3つのことが自走できるの定義らしいです。

このコラムの中で、一番共感したのは「プログラミングの文法を学んだもののそれをどのように使用していくか」のスキルがないということです。これを聞いてものすごく頷きました。
自社研修や就職前のプログラミング学習でも写経や文法の勉強ばかりでそれをどのように使っていくのかを全く学ぶことができませんでした。その為、参画しても自分にはなにもできないという現実が待っていました。

## 受講後になっていたい姿
このコラムでは目標を具体的に書き出すこ

元記事を表示

「独学エンジニア」での学習を始めました

# 自己紹介
初投稿ということで、まず初めに僕の超絶簡単な紹介をさせていただきます。
・某市私立大学の文系卒
・23歳(2024年2月時点) 男
・趣味と言えるほどの趣味はなく、休日は街ブラ/古着屋・リサイクルショップ巡りをしておりドラマバラエティ音楽は平成以前に作られたものが好きです。

# 経緯
さて本題。
今回山浦清透さんの「独学エンジニア」で学習を始めようと思った経緯ですが、
僕は2023年4月に新卒未経験でSierの企業に就職し、そこで2か月半ほど自社研修を受け、とあるWEBサービス開発の現場に参加させていただいています。

 この業界は毎日学習をしてスキルを身に着けていかなければ生き抜いていけないと知っていながらも現場に参加後は何かと理由を付けたりサボってしまい自己学習はほとんど0に近いものでした。
そんなこんなで特に技術力が上がるわけでも無くヒューマンスキルが身につくわけでも無くあっという間に1年が経ち、自社の査定面談(この面談で来季の給与が決まる)で何もアピールすることができず撃沈しました。
 さすがにこのままでは自分がクソ人間になってしまうと思い何か学習に取り掛かろ

元記事を表示

【PHP/MySQL】クッキーをWebサイトに食べさせる。

前回の記事で、SQLを組み込んだホームページを全世界に公開しました。
そのあと、まだ試しておく事が沢山ありますので、順次対応します。
本日はクッキーの設定です。
前回の記事のソースを修正していきます。

https://qiita.com/ishikawaryou/items/938e14ad5cd7c4c2dfd5

# 1.イメージ

taiju.php、writetaiju.phpの2つのソースを修正します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/402487/09898f9d-b0e3-787f-a9e7-13409a55aa11.png)

# 2.実装

「クッキーを読み込んでフォームの名前を設定する from」「クッキーを読み込んでフォームの名前を設定する to」のコメントでくくられた所が修正対象です。

# (1).書き込み処理

“`writetaiju.php

元記事を表示

自作ライブラリ作成の初心者がGitHubとComposerでソースをパッケージ化する

## はじめに

自作していたライブラリを

**”GitHubとComposerを使ってダウンロードできるようにしておけばカッコいいし便利そう”**

と思って

**”Composerって依存関係をJSONで書いておけば簡単にダウンロードできるんだったよねー”**

ってくらいの気持ちでComposerの初心者がやろうとした結果かなりハマってしまったので(色んな意味で)メモを残しておきます。
また、ハマりポイント(自分の場合ですが)を補足として入れておいたので参考になればと思います。

以下では **”ライブラリ公開側の設定”** と **”ライブラリ利用側の設定”** に分けて話を進めます。

:::note info
本記事ではPackagistへの登録なしでできる方法をご紹介しています。
:::

## 環境

プラットフォーム
Windows10
Composer
v2.6.5
Git
v2.31.1
元記事を表示

PHPを(動的に)20倍遅くする方法

## はじめに

運用環境で処理に遅延が発生した際、開発環境では再現が難しい場合があります。

そんなときに便利な、PHPやMySQL(MariaDB)をお手軽に遅くする方法です。

(Linux上で動作しているPHPを前提として書いてます)

## CPUクォータ を設定して遅くする

### PHP

下記コマンドでCPUの割り当てを「5%」に変更します。
(約1/20程度の速度になる)

“`bash
# mpm_prefork の場合
$ sudo systemctl set-property –runtime httpd.service CPUQuota=5%

# PHP-FPM 利用時
$ sudo systemctl set-property –runtime php-fpm.service CPUQuota=5%
“`

* `–runtime`を指定しない場合は、設定が永続化されます
(`–runtime`を付けた場合は、OSの再起動で設定がリセットされます)

### MySQL(MariaDB)

“`bash
# MariaDB の場合
$

元記事を表示

初めてOSSにコントリビュートしました

# はじめに
私はエンジニア3年目ですが、新卒でエンジニアになったときからいつかはOSSにコントリビュートしてみたいという目標がありました。

そしてついに、普段お世話になっているリポジトリや機能に対してコントリビュートできたので、その背景をまとめたいと思います。

# コントリビュートの内容
マージされたPRは、以下です。

https://github.com/composer/composer/pull/11816

リポジトリは、[Composer](https://getcomposer.org/)です。
PHPを使っている方ならお馴染みの、パッケージ管理ツールです。

モダンなPHP開発では、ほぼ必ず用いられるツールです。
筆者も業務でPHPとLaravelを使って開発をしていますが、毎日当たり前のようにComposerを使っています。

コントリビュートの内容は、テストコードの追加です。
self-updateコマンドという、Composer自身のバージョン管理を行えるコマンドがあるのですが、そのコマンドのテストケースをなにもない状態から作成しました。

カバレッジは、4

元記事を表示

Dockerで環境構築(php-fpm+nginx)

# はじめに
初めまして!
エンジニアになって数年、今まで本を読むだけでしたが、もっとプライベートで楽しみながら成長したい!自分が学んだ足跡を残していきたい!と思い記事をかきました!
最終的には自在に開発できるようになりたいと思っています。:triumph:
いろいろな記事を参考にさせてもらっています。:bow_tone2:
その中でもこれってどういう意味?とかつまづいたところを念入りに書いていこうかと思います。:fist:

# 今回の目的
今回はこちらの記事で調べていた内容を実践してみたいと思い別の記事として作成しました!

https://qiita.com/mr_noppo/items/abe96bd0b7200c0cbc6e

「php:\-apache」は初歩のチュートリアルで使っていたような気がするけど、「php:\-fpm」というものは何ぞや、実際に動かせばなんかスッキリするかも?となったのが経緯です!

# 作成した環境

https://github.com/takizawa0548/sample-nginx-fpm

## 使用

元記事を表示

WSLのUbuntuにプログラミング言語の管理ツールasdfを導入する

# はじめに

WSLのUbuntuにプログラミング言語をインストールする際、通常はaptなどの標準パッケージ管理ツールを利用すると思います。aptでインストールする場合、例えばプログラミング言語ごとにバージョンを切り替える手順が違ったりと面倒なのですが、asdfを使用すると、asdfが提供する統一されたコマンドインターフェースで言語のバージョンの切り替えが行えたりします。

本記事では、asdfのインストール手順、asdfによる言語のインストール手順、言語バージョンの切り替え方法をご紹介します。

asdfについては、以下のページをご参照ください。

https://asdf-vm.com/

本記事の前提環境としては、以下の記事をご参照ください。
「WSL+Ubuntu+Docker+VSCode+Githubの構築手順」
https://qiita.com/perilla/items/ef73cf57ade24bc94f19

# asdfインストール

asdfの導入手順につきましては、以下のページを参照ください。

https://asdf-vm.com/guide/gett

元記事を表示

【未経験 / 独学】ポートフォリオ『チャレコ』を開発しました【Laravel / Vue.js / Docker / AWS】

# はじめに
こんにちは!りあるぱ([@realpa931](https://twitter.com/realpa931))と申します。

私がWebエンジニアへの転職過程で作成したポートフォリオを紹介します。

### 自己紹介
大学卒業後、新卒でメーカーに入社。技術職として機械部品の設計や評価に従事。
退職を機に、プログラミング学習を開始(2022年11月〜)。
2024年3月からWeb系企業(自社/受託/SES)で受託開発に従事予定。

# 目次
[1. ポートフォリオの紹介](#1-ポートフォリオの紹介)
[2. 選定技術の採用理由](#2-選定技術の採用理由)
[3. ポートフォリオ作成までに学習したこと](#3-ポートフォリオ作成までに学習したこと)
[4. ポートフォリオ作成の進め方](#4-ポートフォリオ作成の進め方)

# 1. ポートフォリオの紹介
### チャレンジャーが集うポジティブSNS『チャレコ』

![chalreco.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3113

元記事を表示

【PHP】307リダイレクトをよく理解してなかった話

# はじめに

PHPでリダイレクトをしなくてはいけない時があったのですが、その際に少しはまってしまったのでその話を書きたいと思います。

メソッドとパラメータを変えずにそのまま次の画面に渡す、ということをしようとしていました。

# 勘違いしていたこと

PHPにはheader関数があり、それを使用して
“`php
header(“Location: {リダイレクト先のURL}”, true, 307);
“`
というような感じで実装していました。

307リダイレクトは、

>メソッドと本文は変更しません。
(https://developer.mozilla.org/ja/docs/Web/HTTP/Redirections より引用)

というように記載してあったのでてっきりPOSTでもGETでもきたパラメータはすべて渡してくれるのかと思っていました。

# 実際に挙動を見てみる
`index.html`

⇓ GET POST

`index1.php`

⇓ 307リダイレクト

`index2.php`

というような感じでリダイレクトさせ、`index2.php`で

元記事を表示

OTHERカテゴリの最新記事