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

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

【PHP初級⑨】for文応用

[問題]
整数値を5回入力させ、それらの値の合計を表示するプログラムを繰り返しを使って作成しなさい。

# コード
“`php
for($m = 1; $m <= 5; $m++){ $a = intval(fgets(STDIN)); $i[] = $a; } echo array_sum($i); ``` ↓ 5 2 3 9 10  と入力 # 結果 ``` 29 ```

元記事を表示

【JavaScript】要素のドラッグ&ドロップ

このように投稿した要素のドラッグ&ドロップができるよう実装します。
![メモドラッグ.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597913/f6f066e9-2f53-f517-4cc2-4e04a93dcdbf.gif)
# 投稿した要素のドラッグ&ドロップ
“`php


“`
投稿をブラウザに表示します。
次に、JavaScriptでドラッグ&ドロップを実装します。

“`javascript
$(document).on(‘dblclick’, ‘.memo’, function(event) {
let memo = document.querySelector(‘.memo’);
let currentD

元記事を表示

PHPでUUID作成

# はじめに
昔にUUIDを生成するプログラムを作成したが、最近ふとプログラムを見直した時にUUIDを生成していないことに気付いた。
今一度UUIDの生成方法を見直したのでその記録として残そうと思う。
ちなみに記述しているUUIDは全て**version4**である。
※UUIDもどきは**version4**のつもりで作成したが**version4**になっていなかった…

# UUIDの生成
下記の方の記事を参考にしました。
[JavaScriptでUUID4を実現させる](https://qiita.com/jack-low/items/98b760e98895ead4bad6)
“`php
$pattern = “xxxxxxxx_xxxx_4xxx_yxxx_xxxxxxxxxxxx”;
$character_array = str_split($pattern);
$uuid = “”;

foreach($character_array as $character) {
switch($character) {
case “x”:

元記事を表示

Laravel の vite の css から public/assets を絶対パス参照させる

## やりたいこと
laravel的な環境で `app.scss` から `/assets/logo.jpg` を絶対パス参照したい
“`:ディレクトリ構成
www/
public/
assets/
logo.jpg
resouces/
css/
app.scss
vite.config.js
“`

## こうしました
rootに assets をシンボリックリンクしました。

“`bash
$ cd www
$ ln -s public/assets
“`

これで `npm run dev` 時も、`npm run build`時も、画像を参照できます。
“`css:app.scss
div {
background: url(“/assets/logo.jpg”)
}
“`

## これは避けた

“`js:vite.config.js
resolve: {
alias: {
“@”: `${__dirname}/public/`, // url(“@/assets/logo.jpg”

元記事を表示

Windows wsl2でSailを使ってLaravelをインストール後、BreezeでReactの導入をした時のエラー

# 経緯
これに従ってLaravelをインストールし、
https://laravel.com/docs/9.x/installation

これに従ってReactをインストールし、
https://laravel.com/docs/9.x/starter-kits#laravel-breeze

`npm run dev`実行後、[http:localhost](http:localhost)にアクセスすると真っ白の画面となり、コンソールには
`Failed to load resource: net::ERR_ADDRESS_INVALID 0.0.0.0:5173/@vite/client:1`
というエラーが出ていました。自分用のメモ程度ですが、解決策を示しておきます。

# 解決策

原因は、Githubのissueの中で見つかりました。https://github.com/laravel/vite-plugin/issues/28

こちらに従って、`npm run dev`実行後、public/hotのファイルの`0.0.0.0`
を`localhost`に変更することで

元記事を表示

[CentOS7] yum update で php 関連のエラーが発生

# アップデートでエラーが発生

久しぶりにアップデート作業を行うと以下のエラーが発生。

“`shell
$ sudo yum update
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
epel/x86_64/metalink | 8.3 kB 00:00:00
* base: ftp.riken.jp
* epel: ftp.riken.jp
* extras: ftp.riken.jp
* nux-dextop: mirror.li.nux.ro
* remi-safe: ftp.riken.jp
* updates: ftp.riken.jp
base

元記事を表示

Cpanelが入っている状態でLaravelをデプロイしたけど動かない問題

土日潰して調べた結果、あっさり解決したので備忘録

環境
さくらのvps CentOS7 cPanelインストール済み
さくらのvps CentOS7だけならMac環境で作ったlaravelプロジェクトをデプロイするだけですんなり動いたにも関わらず、

cPanelが入っている環境だと何故かWelcomeページすら動かない…

cPanel環境の情報すら少なくて困ってました。

public内のindex.phpにアクセスすればlaravelのウェルカムページができるはずなのですが
“`php:laravelproject
Composer detected issues in your platform: Your Composer dependencies require a PHP version “>= 8.1.0”. You are running 7.3.29-to-be-removed-in-future- macOS.
“`

ギャオピー!mac環境ではphp8.1で動いたけどvps環境は8.0.0これがダメだったのだろうか。。。(cpanelさんでは8.0.

元記事を表示

【個人開発】他人が書いた小説の続きを書けるWebサービスを作りました

# はじめに
本業バックエンドエンジニアが、フロントエンドからインフラまで一貫して知見を得るため、個人開発に挑戦しました。
その時に使用した技術や考えたことを記します。

# 作ったもの
突然ですが、2次創作はお好きですか?
– 公式の展開に満足できずにモヤモヤしたり
– 好きな作品の「What If」を創作したい

こういった経験ありますよね?
そんな問題を解決するために
NOVEL VERSE というWebサービスを作りました。

https://novelverse.jp

NOVEL VERSEは誰もが気軽に小説を書く事ができるWebサービスです。
当サービスに投稿された小説は、会員であればその物語の世界観や登場人物、時代背景などを引き継いでその物語の続きを書くことができます。
物語の展開、登場人物の行く末など、誰もが好きなように運命を決めて執筆する事ができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/964196/0ff637d7-a4f5-33bf-b041-4762

元記事を表示

LaravelのバリデーションRule::inのパラメータをEnumで表現する

Laravelのバリデーションルール `Rule::in` の定義にEnumで指定できないかと思い試してみました。

## 検証バージョン
PHP8.1.6
Laravel9.16.0

## 定義方法
PHPのEnumは内部インターフェースとしてUnitEnumを持っており、`cases()`メソッドを用いてEnumの配列を取得することができます。
しかし、`Rule::in`の引数はstringもしくはintの配列のみ許容しているのでarray_columnでEnumから値を取得して指定してあげる必要があります。

### Pure Enumの場合
“`php:Pure Enum

元記事を表示

DockerのhttpdイメージでWebサーバーを立てる(PHPも動かすよ!)

初めての投稿です!
仕事でコンテナを使う機会が増えてきたので、勉強も兼ねてPHPの動くWebサーバーをDockerで作っていきます。

今回は[Docker公式のhttpdイメージ](https://hub.docker.com/_/httpd)を利用してWebサーバーを立てます。
HTMLだけではなくPHPも動くように作っていきます。
(普通にPHPの動くサーバーであれば[Docker公式のPHPイメージ](https://hub.docker.com/_/php)の「php:-apache」を使うとすぐに動かせそうな気がします。)

**なお、今回はDokerfileでの環境構築を行っていきますー。**

## 前提
– Dockerがインストールされていて、dockerコマンドが利用できる

## 作業環境
– Windows10
– Docker version 20.10.17, build 100c701
– Git Bash

## やってみよう!
### まずはディレクトリ構成
“`:構成
.
├─ Dockerfile
├─ httpd.conf

元記事を表示

HTMLで縦書き台本を描画

声劇台本を投稿できるサイトを作成しました。
旧ボイコネフォーマットの台本をそのまま投稿できるようにしています。

https://taltal3014.lsv.jp/

ただ、台本は横書きだと読みづらい・・・。
旧ボイコネの縦書き仕様が好きだったので、同じように縦書き台本を表示できるかを試してみました。

【環境】
 ・PHP7.4 (フレームワーク:fuelPHP)
 ・MariaDB
 ・jQuery3.3
 ・Bootstrap4

【やりたいこと】
 ・DBに格納された台本テキストを横書きHTMLで描画
 ・「縦書きで表示」ボタンを押すとモーダルで縦書き画面を表示

【DBに格納された台本テキスト原文】
![スクリーンショット 2022-07-09 21.44.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/200881/050a83e9-eb2e-b93d-c4e8-1c770c687cc0.png)
 
【ブラウザ上での表示(横書き)】 ※ボタンを押すと縦書きに切り替わる
![スクリ

元記事を表示

【PHP初級⑧】階乗

[問題]
整数値を入力させ、その値の階乗を表示するプログラムを作成しなさい。ただし、0以下の値を入力した場合は1と表示する。

# コード
“`php
$a = intval(fgets(STDIN));
if($a > 0){
echo array_product(range(1, $a));
}else{
echo ‘1’;
}
“`

↓「5」と入力

# 結果
“`
120
“`

↓「-2」と入力

“`
1
“`

☆array_product()
・・・配列の値の積を計算する関数。

元記事を表示

laravel Featureテストコードで自らにリクエストを送信する方法

# 概要

– laravelのテストコードにてリクエストを送る方法をまとめる。

# 方法

1. `vendor/laravel/framework/src/Illuminate/Foundation/Testing/TestCase.php`を継承しているFeatureのテストコードを用意する。(`$php artisan make:test テストクラス名`でテストクラスを生成すれば良い。)
1. Featureテストのテスト関数内に下記のように記載することでGETのリクエストを送信する事ができる。レスポンスが返される。

“`php
$response = $this->get($url, $requestBody, $header);
“`
1. `$url`にはルーティングで定義しているパス部分(ドメイン以外)を格納して渡す。例えば`http://localhost/index`のエンドポイントにGETのリクエストを送りたい場合、`$url = ‘/index’;`とする。`$url`は必須で渡す必要がある。
1. `$requestBody`

元記事を表示

LaravelのDBからCarbonを用いて特定の月のデータを取得する

備忘録に

# 今月のデータを取る場合
“`
// 今月の初めの時間を取得
$now = Carbon::now()->startOfMonth();
// 日付けあふれなしで翌月から1秒引いた時間を取得
$next = Carbon::now()->startOfMonth()->addMonthNoOverflow()->subSecond(1);
// 取得
$data = $this->whereBetween(‘updated_at’, array($now, $next))->get();
“`

nowとnextを変えれば好きな月で取得可能

元記事を表示

TRPGオンラインセッションツール「オンセンルーム」の自宅鯖への設置方法まとめ

本記事で取り上げる「オンセンルーム」ついてですが
ツール本体の詳細解説は本家様で確認してください

https://trpgsession.click/

本家様の設置方法の解説ではレンタルサーバーを使うこと前提に公式では解説されていましたが
自前のサーバーにインストールする手段については詳しいことは何も書かれていないため
実際にサーバーに導入して動かせるようになるところまで調べてみました

とはいっても今どきはレンタルサーバーもずいぶん手軽に
利用できるようになっているのでそこまで旨味はないとは思うのですが
やはり自分の思い通りの部屋を作るにはレンタルサーバーのプランによっては容量が足りなかったり
各ツールさんのサーバーに負荷をかけるのも忍びないということもあるだろうと感じます

前置きはこの辺で今回の記事ではオンセンルームをWebサーバーに設置して
ローカルでオンセンルームを稼働できるまでを解説します。

今回導入する「オンセンルーム」を稼働させるのに必要なものは以下のものです。
Ubuntu20.04
Apache
PHP
PHPの拡張モジュールがいくつか

そして今回の導入条件

元記事を表示

プログラミング初心者の私がQiitaでいただいた金言

## この記事について
この記事は、プログラミング初心者の私が他のユーザーさんからいただいたコメントで、
是非紹介したいコメントがあったので、同じくプログラミング初心者で悩んでいる人達に
共有するために書いております。

# 当時の状況
商社に勤めていましたが、転職に向けて日々の仕事とは別に興味があったプログラミング
を独学で学習している真っ最中でした。
自分の書いたコードがどうしても正常に動作せず、原因と対処方法を検索しては試すので
すが、解決の糸口が掴めず、なかなか進まない苛立ちと焦りが募っていました。

結局、自己解決を諦めて、何が原因かの見通しも立っていない漠然とした状況で、失礼か
とも思いましたがQiitaに助けを求めて質問をいたしました。

# 質問した結果…
質問したその日にデバッグ方法について回答が来ました。
①var_dumpメソッド(プログラムがどのように処理されているか確認するため
に処理結果や経路を確認)
②executeメソッド(SQLが正しく処理されているかも確認するために、戻り値を入手)
③errorInfoメソッド(直近のエラー情報を取得)

元記事を表示

【PHP初級⑦】range関数、array_sum関数

[問題]
整数値を入力させ、1からその値までの総和を計算して表示するプログラムを作成しなさい。
ただし、0以下の値を入力した場合は0と表示する。

# コード
“`php
$a = intval(fgets(STDIN));
$m = range(1, $a);
if($a > 0){
echo array_sum($m);
}else{
echo ‘0’;
}
“`

↓「6」と入力

# 結果
“`
21
“`

☆range()
・・・ある範囲の整数を有する配列を作成する関数。

例)range(1,10)  →  1から10までの整数の配列

☆array_sum()
・・・配列の中の値の合計を計算する関数。

例)
“`php
$a = [2,3,4];
echo array_sum($a);
“`
     ↓ 結果
“`
9
“`

元記事を表示

【PHP初級⑥】switch文(条件分岐)

[問題]
整数値を入力させ、その値が1ならone、2ならtwo、3ならthree、それ以外ならothersと表示するプログラムをswicth-case文を使って作成しなさい。

# コード
“`php
switch(intval(fgets(STDIN))){
case 1:
echo ‘one’;
break;
case 2:
echo ‘two’;
break;
case 3:
echo ‘three’;
break;
default:
echo ‘others’;
}
“`

↓「4」と入力

# 結果
“`
others
“`

↓間違えたところ
“`php
switch($a = intval(fgets(STDIN))){
“`
ここでは変数に代入する必要なし。

☆switch文(条件分岐)
 switch (式){
  case 値1:
   式が値1と等しい場合の処理1;
   break;
 

元記事を表示

PhpStormを日本語化する

# 実行環境
– OS:Windows10
– PhpStorm Version:2022.1.3
# 手順
[File]>[Settings]を開く。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1015414/b64f65b9-b63c-4bfd-277b-268e50bc9b8b.png)
[Plugins]をクリックし、「Japanese Language Pack」を検索し、インストールする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1015414/fa811a8a-e442-ce44-18e6-4b6aecfe5610.png)
インストール完了後、Restart IDEをクリックする。
ポップアップが表示されますが、Restartをクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amaz

元記事を表示

APIサーバーから200が返ってくるのに画面では502になりハマった話

# はじめに
api開発に携わっているフリーランスエンジニアです。
今回はapi開発にあたって、単体テストを通過して結合テストの際にフロント画面で正常動作しているかを確認している際に起こった出来事です。

ネットで調べてもドンピシャな解決法が出てこなかったので、自分に対する備忘録も兼ねてシェアできればと思います。

### トピック
– 事象
– 原因
– 解決方法
– 教訓

### 環境
php 7.1
Laravel 5.5
nginx /1.13.8

# 事象
api開発をし終わり、postmanを使って直接apiサーバーのエンドポイントを叩き、外部apiから情報を取得して、200でレスポンスを返すところまで確認。
テストも作成し、カバレッジも100%。

フロントサーバーからapiサーバーにリクエストを送り挙動を確認する結合テストにおいて、レスポンスは200なのに、フロント画面ではエラーになってしまった。調査してログを見るとフロントサーバーからのリクエストで返ってくるhttp_codeが502だった。

# 原因
apiサーバーのログを確認するが、正常の動作をしておりb

元記事を表示

OTHERカテゴリの最新記事