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

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

WSL2/UbuntuでPHP-FPMとNginx連携のハマりどころ

## はじめに
Windows11のWSL2にUbuntu20.04LTSを入れてます。
先日、そこにNginxとphp-fpm(php8.1)を入れて連携設定したときの「WSL2」ならではのハマりどころがあるので、それをまとめておこうと思います。
なお、php-fpmは最新版をえるため「 ppa:ondrej/php」をリポジトリに追加しています。

## localhostの解決
WSL2上のUbuntuにWebサーバー「Nginx」サービスをスタートさせれば
「http://localhost:xxx」(xxxはNginxに設定したポート)
でページ表示可能です。
これは、WSL2 の localhostForwarding 機能が、Windows側から localhost でWSL2側で listen しているポートにアクセスできるようにしてくれているからです。
これ動いていない(localhostForwarding=false)だと、Windowsのブラウザで
「http://localhost」
でWSL2でlistenしているNginxにアクセスすることはできません。

元記事を表示

【サンプルコード】aws sdk phpでec2 instance profileを使ってapi gatewayへリクエストする

“`php

元記事を表示

rsort関数について

# 概要
競プロの練習課題でrsortを使うことがあったのですが、挙動について把握できておらず少しハマったので備忘録で残します

## rsort
降順に並び替える関数

## メモ
ソートしたデータは以下のように変数に格納する必要があると思っていました。
“`php
$array = [2,10,30,1,3,50];
$rsort = rsort($array);
foreach($rsort as $v){
echo $v;
}
“`
しかし、rsort関数は元の変数に変更を加えます。
なので、以下が正しいです。上記の書き方だとエラーになります。

“`
$array = [2,10,30,1,3,50];
rsort($array);
foreach($array as $v){
echo $v;
}
“`

以上

元記事を表示

header関数でリダイレクトしてみる

# phpの「header」をつかってみた
header関数が優秀だったのでメモに残しておきます

# 使い方
※使う前に注意点↓
**headerを使うときは上にhtmlを書くことができない**

“`php:sample.php

“`
と記述します。
これを実行するとmain.phpに飛ぶことができます。
`exit();`と記述することでこれ以降のコードを実行しないようにしています。

元記事を表示

Phalcon(Volt)についてメモ

## 背景
最近PhalconというPHPのフレームワークを使うプロジェクトに関わることになったため、
実務で使った構文をメモしておく。

ただし、フロント側の実装が現状メインでありPHP側の実装にはあまり触れてないため、
Voltについてメモ(PHP側を触り始めたら書く)

## Phalconとは
とはいえまずはPhalconについて調べてみる。
公式のGitHubのREADME.mdを読むと
“`
Phalcon is an open source web framework delivered as a C extension for the PHP language providing high performance and lower resource consumption.
“`

直訳すると、
PhalconはPHP言語のC拡張として提供されるオープンソースのWebフレームワークであり、高いパフォーマンスと低いリソース消費を提供します。
とある。
https://github.com/phalcon/cphalcon

バージョンとしては最近Phalcon5が発

元記事を表示

ステートマシンを可変関数でリファクタリングする

# 1.はじめに
 正直このタイトルはどうかと思わなくもないのですが、本稿はPHPの可変関数についてのトピックになります。延々投稿を続けているgoogleAssistantから呼び出せるジュークボックス作成について、中心的な部分についてはできあがっているのですが、何しろノンプランアプローチで作成したため見通しが非常に悪い状態です。今後も手を入れて機能拡張するにしても、このまま進めて悪夢化するのは目に見えているので気になっている個所を一旦整理することにしました。
 その整理を進める中で可変関数を使った箇所があり、過去の記事を検索しても具体的な応用例として書かれたものはちょっと見当たらなかったので本稿としてまとめることにしました。
# 2.ビフォー
 タイトルにあるように対象となるのはステートマシンとして動作するロジックです。今手掛けているジュークボックスにはシンプルな文字列を受け付けるインターフェースがあります。単純なPLAY, STOP程度なら良いのですが、SAVEやLOADでファイルアクセスを行いたい場合、SAVE(やLOAD)を送信した後にファイル名を送信する、という動きをします。

元記事を表示

Laravel + MySql コネクションチェック

# Database Connetion Check

“`terminal:terminal
PS C:\Users\hanam\Desktop\tutorial> php artisan tinker
Psy Shell v0.11.9 (PHP 8.1.6 — cli) by Justin Hileman
> DB::connection()->getPdo();
“`

元記事を表示

LaravelでIntervention Image を導入する方法 (Laravel9対応)

※2分で読めます
Intervention Image を導入に関して簡単にまとめました。(・∀・)

## Intervention Image とは?
Intervention Imageは、オープンソースのPHP画像操作ライブラリで、画像を操作する簡単な方法を提供します。Intervention Image Composerパッケージを利用することで、サイズ変更や指定したファイルへのデータ保存などを行うことができます。

## サンプル(見なくても良いです)
“`
# サイズ変更
$image = Image::make(‘public/foo.jpg’)->resize(300, 200);

# サイズ変更してセーブ
$image2 = $request->file(‘home_slide’);
$name_gen = hexdec(uniqid()).’.’.$image->getClientOriginalExtension(); //3434343443.jpg
// Image::make($image2)->resize(636,852)->save(‘uplo

元記事を表示

find()で識別子が長すぎる場合の対処法

## 環境
PHP:7.4
cakePHP:4.2
DB:Oracle Database
## 概要
cakephpのfindメソッドでデータ取得する際、「ORA-00972:識別子が長すぎます」のエラーが表示され、はまってしまうことが多くありました。
その際の対処法を記載します。
##エラーの理由
バージョン12.2より前のOracle Databaseでは、表名、列名、主キー名などの識別子名が30文字に制限されているそうです。
エラーの通り、識別子が30文字以上あるため、データが取得できませんでした。

https://docs.oracle.com/cd/F37623_01/odpnt/EFCoreIdentifier.html#GUID-FA43F1A1-EDA2-462F-8844-45D49EF67607
## 対処法
### select()で識別子を指定する
“`index.php
$query = $player->find()
->select([
‘SOCCERPLAYER_NAME’ =>

元記事を表示

【備忘録】特定のページに寄らないと行けないけどページ遷移したように見せたくない【JavaScript】

# 【目次】
[1.【条件】](#条件)
[2.【説明】](#説明)
[3.【参照】](#参照)

# 【条件】
index.phpにデータを送らなきゃ行けないけど、ページ遷移したように見せたくない。

“`index.php
//必ずindex.phpに寄らなければならない

~

“`

# 【説明】

“`index.js
//ページ遷移して戻る
if (location.pathname == “/xxx/index.php”) {
document.location.href = `${document.referrer}`;
}
“`

`location.pathname`でURLのパスを取得して、`/xxx/index.php`の場合のみ、cookieに保存されている情報で前ページに戻ります。

# 【参照】
https://twitter.com/doremire0/

元記事を表示

PHP、Wordpress用の全国市区町村マスタコード(2022年9月版)

# 全国市区町村のマスタデータが必要になった
駅データと一緒に全国市区町村データも必要になったので作成。
郵便住所.jpさんからデータを拝借。このサイトは取得データが絞れるので、とてもコードに利用しやすい。
とても汎用性に高い構想で作られていて、住所データ系サイトの中でも素晴らしいサイト。
https://postaladdress.jp/

# マスタコード
県→市町村→区の3レベル構造です。
コメントアウト解除すれば地域→県→市町村→区の4レベル構造にも対応。
https://github.com/obwebsys/obwebsys/blob/master/create-todofuken202209.php

元記事を表示

PHP、Wordpress用の全国駅マスタコード(2022年9月版)

# WordPressで全国駅マスタが必要になった
汎用コードはどこにも転がってなかった。ただ、駅マスタを公開しているサイトはあった。
駅データ.jpである。
https://ekidata.jp/faq.php

このサイト、faqを見れば分かるようにかなりデータの扱いが柔軟ぽい。無償であれば有償データも第3者に提供してよいとなっている。
メンテナンスは素人には出来ないであろう、、というプロの余裕を感じるし、実際その通りだと思う。なかなか至れる境地ではなく、感服しきりである。
ありがたくデータを使わせてもらい、出来れば読者諸兄にも有償データを購入していただき、メンテナンスを応援してもらいたい。

# マスタコード

都道府県番号からorder順を生成するので、最低限は順番通りに並ぶはず。
県レベル→路線レベル→駅レベル
という3レベル構造です。
https://github.com/obwebsys/obwebsys/blob/master/create-ekidata202209.php

# 生成コード(おまけ)
https://ekidata.jp/api/
こちらからAPI

元記事を表示

@csrfについて

現在独学でLaravelを使用し、簡単な掲示板を作成しています。
掲示板を作成していくなかで、投稿や編集画面でフォームを作成する際formタグの中に@csrfを記載することで、CSRF攻撃を防げる機能がLaravelには備わっておりました。
CSRF攻撃とはそもそも何?というところから、@csrfと記載する事でどのような処理を行なってくれているのかという所までご紹介させていただきます。
理解を深める意味と備忘を兼ねて投稿をさせていただきます。

## ●そもそもCSRFとは
##### 正式名称:cross-site request forgeries(クロスサイトリクエストフォージェリ)
CSRFとは、Webアプリケーションに存在する脆弱性、もしくはその脆弱性を利用した攻撃方法のことです。
ユーザーが悪意のあるURLにアクセスしてしまった場合に、意図しないリクエストを特定のWebサービスに送られてしまうというものです。掲示板であれば意図しない投稿や、オンラインバンキングであれば意図しない送金処理などが他者によって行われてしまうみたいですね。
恐ろしすぎる。。。

## ●@csr

元記事を表示

ド・モルガンの法則をphpにて

# ド・モルガンの法則?

元記事を表示

最初はスパゲティコードでもいいからまず書く

スパゲッティは、たらこスパゲッティが好きです。最近は、大盛りで食べれません(笑)

スパゲティコードとは、処理が整理されていない複雑に入り混じったコードのことです。
業務的に言うと、後から修正しにくい、新規機能を追加しにくいコードのことです。

作成する時も、機能を追加する時も、後から改修しやすい・自分以外の人が見てもわかりやすい(属人化しない)コードを書いたほうが親切です。
業務時間を減らすことにもつながるので、コスト面を考えても配慮したいポイントです。

最近は、どのプログラミング言語もフレームワークが増えているので、気にせずともMVCモデルなどオブジェクト指向を取り入れてコードを書くことが多いと思います。
(現場にも寄りますが・・・笑)

## 最初はスパゲティコードでもいいからまず書く
**コードは綺麗に書くことが大事です!**
と言っていますが、実際にコードを書く時は **「スパゲティコードでもいいから書く!」** ことをオススメしています。
コーディングは文章を書くのと同じで、書き始めると自然と筆が進むものです。
だから、 **考えるよりもまずは書きましょう!**

##

元記事を表示

PHPの変数の値をHTMLタグの属性値として使う。

# 前書き

PHPを利用してHTMLを書いていると、変数の値をタグの属性値にして使いたい時があったので、そのやり方

# コード

“`php:input_sample.php





input sample page

名前を入力したい人を選択してください。

# 1.はじめに
 [Google Assistantから制御できるジュークボックスサーバーを製作しました](https://qiita.com/SSaitou/items/c025c27fe8852a9fea60)。事前に用意されたリストに従って楽曲再生をするシンプルなものですが、作成にあたってはあんまり単純ではありませんでした。ただ、オーソドックスな方法を使っています、という話を続けていて、前回は[子プロセスの非同期実行管理](https://qiita.com/SSaitou/items/a04c076feb0028ff93d7)でしたが、今回は非同期プロセス間通信の話になります。
 下図では「Class IPC」が担う機能となります。
![JukeboxServer_Structure.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2696131/57dc15f6-6fbf-00ca-c399-21a25269d713.png)
 非同期通信を行う必要性については前回の子プロセスの稿でも触れてい

元記事を表示

Web系エンジニア新卒1年目が入社半年後に感じた、初学者エンジニアに必要なスキルまとめ

# はじめに

文系出身で(ほぼ)未経験から、Webエンジニア職に就職した僕が入社後半年経って感じた、未経験エンジニアが率先して学んでおきたいスキル及び教訓をまとめてみました。
初学者の方の参考になれば幸いです。

## 簡単な経歴

– 4年制文系私立出身(愛知県)
– 学生時代に3か月ほど大学生専用のプログラミングスクールに通う(言語:Ruby on Rails)
– 2022年新卒として都内エンジニア職に就職
– 使用言語:PHP(80%), Javascript(10%)
– 入社前研修としてhtml, cssの課題あり

### 入社後~半年
– 4月~4月中旬:新卒研修
– 4月中旬~6月初旬:オンラインプログラミングスクール研修(PHP)
– 6月中旬:業務スタート

# 教訓:「備えあれば憂いなし」
### 早めにプログラミング言語以外の知識にもアンテナを張っておく

エンジニアを目指し始めたころは、htmlやcssだとか学んで得意げになってた自分がいます。。(コード書いている俺イケてる!的な)
ただ、就職してからはエンジニアとして働くにあたって、プログラミング・コーデ

元記事を表示

AlmaLinux OS 9にPHP 8.1, PHP-FPM 8.1をインストール(AppStream)

# はじめに

Application Stream(AppStream)を利用してAlmaLinux OS 9にPHP 8.1をインストール
親記事:[PHP, PHP-FPMの各種インストール方法とEOLまとめ](https://qiita.com/witchcraze/items/dfe3823554b7caba6f6a)

## サポート

本手法で導入した場合、[Red Hat Enterprise Linux Application Streams Life Cycle \- Red Hat Customer Portal](https://access.redhat.com/support/policy/updates/rhel-app-streams-life-cycle)より、2025-05がEOLだと思われる。
それ以降に報告された脆弱性や不具合への対応は実施されない可能性がある。

## LOG

### インストール

9.0系で出たプロダクトはモジュールではなかったが、9.1系で出たプロダクトはモジュールの模様

“`shell-session
# cat

元記事を表示

Symfony3.4以降 — なぜ LaravelでなくSymfony ? —

こんにちは、株式会社CHAPTER-THREEの井川です。

Symfonyの日本語記事の少なさを少しでも解消し、Symfonyの魅了を少しでも届け、
ユーザーを増やすための記事です。

# 前提
Symfony の言語仕様が今の形になった 3.4以降。今は、PHP8.0のAttribueに対応した6.0をベースに話を進めます。
>普段業務でやっているのですが、もし詳細に間違え等ありましたら直しますので教えてください!

# 良質の資料の紹介から。
僕は、Symfonyのことを調べるのは、ほぼこの3サイト。
英語サイトは、ブラウザの翻訳の操作に慣れるとなんとかなります。

– Symfony日本語入門【公式】
ここは、読み物として楽しい。やっぱり日本語だと読みやすい。

https://symfony.com/doc/6.0/the-fast-track/ja/index.html

– Symfony公式サイト[英語]
仕事の調べ物はほぼこの公式サイト。上記の日本語入門を読んでおけば、どこを調べればいいのか大体検討がつきます。

https://symfony.com

元記事を表示

OTHERカテゴリの最新記事