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

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

【イベント】PHPカンファレンス福岡2023でLT初登壇しました

6月24日(土)に[PHPカンファレンス福岡2023](https://phpcon.fukuoka.jp/2023/)が開催されました。(4年ぶり!)

カンファレスでLT登壇を行ったので、前後の感想をまとめました。
お気軽にお読みください!

https://fortee.jp/phpconfukuoka-2023/proposal/07dea75c-91f3-4987-8d4b-3529b8e073e1

https://www.youtube.com/@phpphpconfuk

# プロポーザル応募〜採択
自分がエンジニアへ転職したきっかけの一つがカンファレンスなので、登壇は昔からの目標でした。

とはいえ、登壇に応募し始めたのはつい最近です。コロナ禍でオフラインイベントそのものが減っていたこともありますが、過去に参加したどのカンファレンスも登壇のレベルが高くて尻込みしていました。

ですが今年はエンジニア5年目の節目もあり、今後のカンファレンス開催可否も予想がつかないので思い切って応募しました。

採択の連絡をいただいた時は、嬉しい反面プレッシャーを感じました。

# 登壇

元記事を表示

PHP、CURLFileでファイルをアップロードする。(multipart/form-data、POST)

PHP、CURLFileでファイルをアップロードするコードです。
試行錯誤したので備忘録として残します。
※$_FILES、”Content-Type: multipart/form-data”、POSTを使用しています。

# 本記事の環境

ホストOS:Windows10 Pro 64bit 8GB
ゲストOS:Red Hat Enterprise Linux release 8.3 (Ootpa)
Oracle VM VirtualBox:6.0.4a
vagrant:Vagrant 2.2.14
Apache:2.4.37
PHP:PHP 7.4.15
Tera Term:4.105
コマンドプロンプト
ホストOS側に実ソース

# ソースコード

“`php
$curl_file = new \CURLFile($_FILES[‘uploadfile’][“tmp_name”], $_FILES[‘uploadfile’][“type”], $_FILES[‘uploadfile’][“name”]);
$option = [
‘aaa’ => ‘AAA’,

元記事を表示

Laravel_パスワード再設定用の”Gmai”アドレスを設定する

# Laravel_パスワード再設定用の”Gmail”アドレスを設定する
パスワード再設定用のメールを送信する。
※メールアドレスはGmailを使用する。

## 1.Googleアカウントで必要な設定をする
①Googleアカウント > セキュリティを開く。
②2段階認証を有効にする。
③アプリパスワードを設定する。
 1. 以下の”2段階プロセス”をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3323019/3fc7a08e-d454-49d1-f380-5b362f3fae64.png)
 2. 以下の”アプリパスワード”をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3323019/eab2701f-f4e5-4d37-075b-f51bed76882d.png)
 3. 以下のように設定する。
 アプリ:メール
 名前:”その他”を選択し、作成し

元記事を表示

Laravelでログイン機能を実装する方法(準備編)

# Laravelでログイン機能を実装する方法(準備編)

Laravelでログイン機能などの認証機能を実装する時は、`Laravel UI`というパッケージを
使用すると簡単に実装できる。(Laravelのバージョンが9系の場合)
Laravel UIの場合、CSSフレームワークはBootStrapになる。

## 1.Laravel UIをインストールする。
①VS Codeのターミナルまたはコマンドプロンプトを開き、
 Laravelをダウンロードしたディレクトリまで移動する。
②以下のコマンドを実行する。
“`
composer require laravel/ui
“`
③2分程度待ち、以下のように出たらOK。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3323019/cebedfea-65cf-bc96-68ec-f3425a56507a.png)

## 2. Bootstrapをインストールする。
①Bootstrapの認証機能用のファイルを同時にインストールす

元記事を表示

if文はなぜ 変数not=false でtrueを表すことがあるか

# if文はなぜ 変数not=false でtrueを表すことがあるか

trueが10進数で言う1を表すか、-1を表すかはプログラミング言語によって異なるから。

例えばVB.NETではTrueは32bit版ならFFFFFFFF(16進数)となって-1を表すけど、PHPだとTrueは1になる。(バージョンによるかもしれないが)

VB.NETでTrueがFFFFFFFF(16)となっているのは、CPUの処理サイズが32bit単位なら1にしようが-1にしようが確保メモリ領域のサイズは32bitで一緒だからって先輩から聞いたんですが、本当ですか?

# あとがき
情報処理技術者試験で2進数の話を学んだときは「今時の実務で使うときはこないでしょ」って思ってましたが、使いました。必要です。

元記事を表示

連想配列の追加方法(PHP編)

**paiza**の森の課題プログラムを作成しました。
***問題***はこちら

>n 人の人に関して、それぞれの人の名前と財産が与えられます。その後に人名 S が与えられるので (S は最初に与えられた名前のうちのいずれか) 、 S の財産を表す整数を出力してください。

挑戦しました

“`PHP

元記事を表示

DockerからSDK経由でAWSのS3にアクセスする時に出会ったエラーの正体は、、、

# はじめに
自分がだいぶ遠回りしたので同じような人がなんだそういうことかよとなるようにここにメモしておきます!(*´ω`*)
ちなみに後々出てくる`credentials`は期限設定によりますがセッション切れたらちゃんと新しいのにしないと使えません。

# どんなコードを書いていた?

“`PHP

$s3Client = new S3Client([
‘profile’ => ‘277650267482_PowerUserAccess’, //どのプロファイル使うか(後で詳細記載します。)
‘region’ => ‘ap-northeast-1’, //SSO Regionの箇所のとこなのかなと?(後で詳細記載します。)
‘version’ => ‘2006-03-01’, //ここ決まりっぽいです。またはlatestかと
]);

try {
$result = $s3Client->createBucket([
‘Bucket’ => ‘abcde-img’,
]);
} catch (AwsException $e)

元記事を表示

【PHP8.3】PHP8.3の新機能

[PHP8.3](https://qiita.com/rana_kualu/items/91111443105a75a55e2f) / [PHP8.2](https://qiita.com/rana_kualu/items/fc4b02e2daaf102aa92f) / [PHP8.1](https://qiita.com/rana_kualu/items/a6601b49e0591eb42200) / [PHP8.0](https://qiita.com/rana_kualu/items/fe7998fbe773544d5d25)

2023/07/18、PHP8.3が[フィーチャーフリーズ](https://wiki.php.net/todo/php83)しました。
言語機能に関わるような機能の追加・変更が締め切られたということです。
今後はデバッグを繰り返しながら完成度を高めていき、2023/11/23にPHP8.3.0がリリースされる予定です。

というわけで[PHP8.3で実装されるRFC](https://wiki.php.net/rfc#php_83)を見てみましょう。

元記事を表示

プログラマ泣かせのブラウザキャシュ

## 直したはずのCSSが当たっていない
CSSの修正って結構面倒ですよね。もちろん最近はCSSを直接編集せずSASSの技術を使うことが多いと思います。それでも、細かい数字を調整するのは苦労します。
それでやっとできたと思って、確認すると何も変わっていない。これほどガックリすることはありません。
SASSのコンパイルがうまくいってないのか?CSSファイルを直接エディタで確認しても、ちゃんとコンパイルされています。
実際、これで1時間ぐらい悩むのことは何度かありました。

![](https://storage.googleapis.com/zenn-user-upload/03ba3b196117-20230628.jpg)

## そんな時は強制リロード
まず、試してもらいたのがこの強制リロードです。それってなにかというと、修正したCSSファイルやJSファイルを強制的に再読み込みすることです。

このブログをご覧になっている方々にとっては当然のこととは思いますが、あえて説明しておくとブラウザは常に画面に表示すべき内容(専門的な表現だとレンダリングすべきDOM要素)を常に全てサーバー

元記事を表示

isset, empty, is_nullの違い微妙だから、書いてみる

イマイチわかってないから、とりあえず書き出してみて理解する
何が違うんだ?
間違ってたら、小学生でもわかるように解説お願いします。

# isset()
変数がセットされていて、それがNULLでないことを調べる
値が入っていればtrueになる、入ってなければfalse

変数がセットされていなかったらって表記したい時もあるから
その時は、!isset()ってつけることもあるみたい。
学習している講座でも使ってたんだけど、私の中ではempty()じゃダメなのか?ってなってる。

# empty()

変数が空かどうかを調べる
空( *空文字、* *0、* *NULL、* *FALSE、* *空の配列* )だったらtureそれ以外はfalseになる。

# is_null()
変数がNULLかどうかを調べる。
変数がNULLだったら、trueそれ以外だとfalseになる
変数がセットされていない場合の時もtrueを返すそうだが
セットされてる、されていないはisset()を使った方がいいんだって

## 表にまとめてみた
| 関数 | 未定義 | NULL | 0 | ””(空文字)

元記事を表示

模写「How To Make Login&Register Form With User &Admin Page Using -CSS -PHP -MySQL Database」

模写参照サイト

順番
1.admin page
(1)html(admin_page.php)
(2)css(style.css)
2.user page
(1)html(user_page.php)
(2)css(style.css)
3.register form
(1)html(register_form.php)
(2)css(style.css)
4.login page
(1)html(login_form.php)
(2)css(style.css)
5.register form(DB接続)「POSTメソッド」
6.login form(DB接続)「POST,SESSION」
7.admin page「SESSION」
8.user page「SESSION」
9.logout「SESSION」


1.admin page (html&css) [2023年6月29日

元記事を表示

infinityfreeでdeploy方法(PHP非商用)

手順(極簡):

1.infinityfreeに登録する。
2.(creat account)アカウントを作成する:自分の好きな名前を使用して構いません。
3.Database Nameを記入
4.MYSQL Databasesを開く。
5.creat Databaseをクッリク(データベースを作成する)。
6.作成したデータベースを開く。
7.自分のデータベースをアップロードする。
8.ホームページの情報に基づいて、自分のPHPファイルを開き、以下の内容を変更する。
①USERNAMEユーザー名
②PASSWORDパスワード
③HOSTNAMEホスト名
④DATABASE NAMEデータベース名
8.(file manager)ファイルマネージャを開く。
9.自分のファイルをアップロードする。
10.ラベル(LABEL)の場所のリンクをコピーし、自分のログイン画面を開く。ログイン画面のリンクもコピーする。
11.今後は直接ログイン画面のリンクを提供しても構いません。

元記事を表示

DockerでのLaravel環境構築時のCould not deleteエラー解決法

# はじめに

こんにちは。今回はDockerを使用してLaravelの開発環境を構築する際に遭遇したエラーとその解決策についてお話します。
`create-project`を実行した後に発生する`[RuntimeException] Could not delete ディレクトリ`というものです。
このエラーが発生して、Laravelのインストールが正常に完了せずドツボにはまっていました。

# 結論

`composer config –global process-timeout (任意の秒数)`を実行してタイムアウト時間を延ばす。

# 記事の対象者

Laravelのインストール中に`could not delete`エラーに直面して困っている方。

# コンテナの中身

phpコンテナとnginxコンテナのみのシンプルな構成です。

# エラー解消の詳細

まず、`Could not delete`エラーの原因を調査しました。その結果、以下の3つの可能性が挙がりました。

1. メモリーの問題
2. ネットワークの問題
3. パーミッションの問題

しかし、Docker内

元記事を表示

【PHP】特定のクラスであるかを型演算子で判定して条件分岐させる

変数に入っているインスタンスがどのクラスから作ったものかで、処理を分岐させたいことがあるかと思います。

その場合、型演算子 **instanceof** を使うと良いです。

instanceofは、対象のインスタンスがどのクラスかをbooleanで判定してくれる演算子です。
具体的な使い方としては、以下です。
対象のクラス名と比較して、同じクラスからできたインスタンスの場合、trueを返します。
“`php
// $objectはインスタンスが入っている変数
// TargetClassはクラス名
$object instanceof TargetClass
“`

では、具体的に本記事のタイトルでもある、条件分岐させる例を以下に示します。
例えば、アカウントがユーザー(User)と管理者(Admin)の2種類があるとします。
その2つのクラスから作ったインスタンスがあった場合、
どちらかによって処理を分岐させたい場合は以下のようにします。

“`php
Class User
{
}

Class Admin
{
}

$account = new User();

if (

元記事を表示

【Laravel】PHPバージョンアップ後にphp.iniを確認する

# 詰まったこと
AzureにLaravelをデプロイする準備をしている中、ローカル開発環境のLaravelは7.2.1を使っているのにAzureのAppServiceの設定をPHP8.0.1にしてしまったので、ローカルもPHP8.0.1にあげた。

conposer.jsonと環境変数を変えて、いざcomposer updateを実行して出たエラーに時間を取られたので最終的な解決方法メモ

“`
composer update

[Composer\Exception\NoSslException]
The openssl extension is required for SSL/TLS protection but is not available. If you can not enable the openssl extension,

元記事を表示

ITエンジニアなのにまだ投資やってないの?ChatGPTでクオンツシステム作って儲けようぜpart2

## 前回まで
ITエンジニアなのにまだ投資やってないの?ITエンジニアならChatGPTでクオンツシステム作って儲けようぜ(https://qiita.com/kazukichi/items/fa6433c3d0115c2b627b)

## システムなんかで勝てるの?w
日本の投資家には批判的な意見もまだまだある(詐欺的なものも多いですから)みたいですが、エンジニアの皆さんなら分かるでしょう。

出来る

ですよね。
そもそも、勝ってる投資家はいくつかの情報を判断して買いや売りのタイミングを測っていて、それは全て定量化した情報を元に判断してるわけですから。

システムで勝てない!って言ってる人は結局その戦略が悪いだけでシステムが悪い分けじゃないわけです。

因みにITを駆使して、ブランド苺を生産している

**ミガキイチゴ**

というのがあるんですが、熟練職人の「感覚」で判断しているものを職人の視線を全てトラッキングして、

**どういう時に何処を見て判断しているのか**

を数値化して、成功しています。
要は、職人さんが言う「感覚でやってる」というのは実際感覚ではなく、言語化す

元記事を表示

Apache+PHPサーバーのWebサイトをAWS Lambdaで動かす

別チームでホスティングしていたWebサイトがあったのですが、いろいろと都合がありWebサイトのソースとドメインだけをもらい、自分のとこのチームでホスティングする機会があり、「いまさらサーバーとか持ちたくない! サーバーレスでやりたい! それにIaCしたい!」と四苦八苦したメモです。

## 受領したソース

受領したWebサイトですが、販売終了したけれど残しておかないといけない商品サイトとかをイメージしていただけるといいかと思います。アクセス頻度・更新頻度ともに多くはありません。

ファイル種別としては、以下のようなものが含まれます。古き良きCGI的な感じの動的サイトです。

– HTMLファイル
– PHPファイル、incファイル
– アセットファイル
– jsファイル
– スタイルシート
– 画像
– etc…

容量的には全体で400MBくらいですが、そのほとんどはアセットファイルで、HTML,PHPは数MBです。PHPはヘッダーフッターを共通化したり、ニュースやブログ記事のXMLをCMSサーバーから取得・整形したりする用途で使われています。C

元記事を表示

新: Laravel SQLの実行クエリログを出力する

## 概要

今回アップデートしたLaravel [10.15.0](Laravelhttps://github.com/laravel/framework/releases/tag/v10.15.0) でSQL実行ログの出力処理が改善されました。

以前にも同様の記事を書いていましたが、こちらはこちらでしばらく使われるかなと思うので、古い記事は残しつづ新しく記事を書きました。

https://qiita.com/ucan-lab/items/753cb9d3e4ceeb245341

Laravelのアップデート内容についてはこちらに詳しく解説された記事がありますのでご紹介します。

https://qiita.com/fuwasegu/items/c6e668dae1546184ff15

## 環境

– PHP: 8.2.8
– Laravel: 10.15.0 以上
– MySQL: 8.0.32

## SQL実行ログを出力する

### サービスプロバイダーの作成

“`shell-session
$ php artisan make:provider Databas

元記事を表示

フットサルコート予約webアプリを真似して作ってみる

## 説明
PHP,Javascriptの復習のために何か作ろうと思ったのでやってみます。
phpはなんとなく覚えているんですが、JavaScriptは苦手意識があって何も覚えてないのでほぼ0からです。

## 使用言語等
##### フロントエンド
・HTML, CSS, Javascript

##### バックエンド
・phpのLaravelを使ってみる

##### データベース
・MySQL

## その他

やってるうちに必要だったり、面白そうだなって思ったらjavascriptのフレームワークを使ってみる。

元記事を表示

Laravel で使いたい便利なパッケージ4選 (Pint, Larastan, Telescope, Insights)

# はじめに
**Laravel での開発効率・品質向上に繋がる便利なパッケージ**のまとめ記事です。

| パッケージ名 | 用途 | 対応バージョン |
| —- | —- | —- |
| Laravel Pint | コード整形 | PHP 8.1 以上 |
| Larastan | 静的コード解析 | PHP 8.0 以上 かつ Laravel 9.x 以上 |
| Laravel Telescope | デバッグ | PHP 8.0 以上 かつ Laravel 8.37 以上|
| PHP Insights | コード品質分析 | PHP 7.4 以上 |

# Laravel Pint

## 概要
PHP-CS-Fixer をベースとして作成された Laravel 用のコード整形ツール

https://laravel.com/docs/10.x/pint

## 対応バージョン
PHP 8.1 以上

## インストール手順
Laravel 9.x 以上のアプリケーションであれば基本的には不要です。
もしインストールされていなければ、以下のコマンドを実行

元記事を表示

OTHERカテゴリの最新記事