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

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

Laravel Passportのoauth系ルーティングはどこで定義されているのか

# 概要

– Laravel Passportのoauth系のルーティングはどこで定義されているのか追ってみた。

# 結果

– `vendor/laravel/passport/src/Passport.php`にルーティングに関する記載があった。

“`vendor/laravel/passport/src/Passport.php
/**
* Binds the Passport routes into the controller.
*
* @param callable|null $callback
* @param array $options
* @return void
*/
public static function routes($callback = null, array $options = [])
{
$callback = $callback ?: function ($router) {
$router->a

元記事を表示

Laravel Passportを実際に体験してみる

# 概要

– Laravel Passportを導入してちょっと使ってみた時のメモ

# 導入方法

1. 下記コマンドを実行してライブラリそのものをインストールする。

“`terminal
$ composer require laravel/pasport
“`

1. 下記コマンドを実行してマイグレーションを行う。

“`terminal
$ php artisan migrate
“`

1. 下記コマンドを実行してPassportをインストールする。(トークンを作成するための暗号化キーとPersonal access clientとPassword grant clientが作成されるらしい。)

“`terminal
$ php artisan passport:install
“`

1. 上記コマンドで発行された各種情報はDBのoauth_clientsテーブルに自動で格納される。
1. `use Laravel\Passport\HasApiTokens;`の記載を`App/Mod

元記事を表示

TypeScriptでLaravel製APIのバリデーションエラーのレスポンスボディに型をつける(型ガード付き)

タイトルの通り、Laravel製APIのバリデーションエラーのレスポンスにTSで型をつけていきます。フォームのリクエスト処理とかで便利かと。
まずレスポンスの見本を見ていきましょう。
“`json
{
“message”: “The given data was invalid.”,
“errors”: {
“【リクエストボディのプロパティ名】” : [“【エラーメッセージ】”,”【エラーメッセージ2】]
}
}
“`
**errorsというプロパティ名なのにオブジェクト**なのが紛らわしいのと、 **エラーメッセージの配列が入ってる**あたりに注意が必要です。

“`ts
export type ValidationError = {
message: string,
errors: Record>
}

//あえて”==”で比較するだけでnull&undefinedを最小のコードで検出できる
const isNullOrUndefined = (unknown: unknown

元記事を表示

【メモ】Composerについて学ぶ(Laravelプロジェクト作成編)

web系のサーバーサイドエンジニアを目指す奴のメモ書きです。

# Composerとは

>Composerは、PHPでの依存関係管理のためのツールです。 プロジェクトが依存するライブラリを宣言することができ、それらを管理(インストール/更新)します。

# 依存関係の管理
YumやAptなどとは異なり、Composerはプロジェクト内のvendorディレクトリなどにパッケージまたはライブラリをインストールする。
つまりプロジェクト単位でパッケージやライブラリのインストールができるということ。

デフォルトとしてプロジェクト単位でインストールする仕様になっているが、globalコマンドを使用すると他のプロジェクトでもインストールしたパッケージやライブラリを参照できるようなる?

Composerを使ってプロジェクトで使いたいライブラリを宣言すると、そのライブラリだけでなく、ライブラリが依存しているライブラリをバージョンの整合性を崩さないようにプロジェクトにインストールすることができる。
依存関係を更新する場合もコマンド一つで実施可能。

# システム要求
2022/4/13現在の最

元記事を表示

HubSpot Client Library でインポートしたい

# はじめに
MAサービスである[HubSpot](https://www.hubspot.jp/)は、APIにアクセスするための[クライアントライブラリ](https://github.com/HubSpot/hubspot-api-php)を公開しているが、[ドキュメント](https://developers.hubspot.jp/docs/api/crm/imports)がいまいちわかりにくく、さらにインポートに関してはリクエストのサンプルコードが掲載されていない。ライブラリを使ったインポート機能を開発する際に非常に苦労した。
そのため、備忘録を残しておく。

# サンプルコード
~~~PHP:
“インポート名”,
“dateFormat” => “YEAR_MONTH_DAY”, // (*)ポイント
“files” => [
[
“fileName” =>

元記事を表示

dompdf セキュリティ警告:人気のある PHP PDF ライブラリに RCE の脆弱性が発見される

本記事は、2022年3月18日に公開したブログ[dompdf security alert: RCE vulnerability found in popular PHP PDF library](https://snyk.io/blog/security-alert-php-pdf-library-dompdf-rce/?utm_source=QiitaBlog&utm_medium=Referral&utm_campaign=QiitaBlog)を日本語化した内容です。
![logo-vertical-solid-background.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2216557/759e17f2-f43c-1cfb-e3f3-361c614f6f6e.png)

# はじめに
先日、Positive Security社の研究者が、一般的なPDF生成ライブラリである[dompdfにリモートコード実行(RCE)の重大な脆弱性](https://security.snyk.io/vuln

元記事を表示

MAMPのWeb Startがクリックできない時の対処法

# MAMPでWeb Startがクリックできなくなった
簡単な記事になるのですが、下の画像のWeb Startがクリックできなくなり
php adminの確認ができなくなってしまいました。
下の写真は問題なくクリックできる状態です。

![スクリーンショット 2022-04-14 16.56.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1748789/b8ca800f-beff-b3d6-5942-ede3baa9b572.png)

# 試してみたこと
1. PHPのバージョンを変える  特に効果なかった
2. referencesのポート番号を変えてみるが効果なし
3. サーバーを起動したり再起動するが変わらず

# 解決できた方法
***PCを再起動したら解決***できました。
原因はわかりませんでした。

# 注意
上の解決方法は自分のやり方なので、それぞれの状況によって変わってくるので注意してください。

元記事を表示

Laravelの中間テーブルにcreated_atだけ自動的に渡す方法

# 確認したバージョン

Laravel 8

# どういうこと?

以下のようなクラスがあったとします。

“`php
class Foo extends Model
{
public function bars() {
$this->belongsToMany(Bar::class);
}
}
“`

このとき、barsの中間テーブルとなる`foo_bar`に作成日時を勝手にinsertしてほしいといった事があるかと思います。

自動でやってくれないかな?と思って、何も考えずにsyncやattachをすると、created_atカラムはnot null制約があるから違反してるぞ!と怒られちゃいます。

まず思いつくのは以下です。正直先程までこの方法を使っていました。

“`php
$foo->bars()->attach($id, [‘created_at’ => Carbon::now()]);
“`

とか

“`php
$foo->bars()->syncWithPivotValues($ids, [‘created_at’ => C

元記事を表示

PHPerKaigi 2022 に参加した

今年、初めて PHPerKaigi 2022 (2022/04/09〜4/11) に参加しました。

とても勉強になったし楽しかったです。

コロナ時代になって良いことなんて何もなさそうですが、こうしたイベントに奈良の田舎者が参加できるようになったというのはとても良いことでして、奈良の田舎者が簡単にイベントに参加できる喜びは嬉しい限りです。

コロナ前から PHPerKaigi のことは知っていましたが、東京まで出ていくのはとてもハードルが高かったのです。
こうしてオンラインで参加できると本当に嬉しい。
参加費用がある程度かかったって、東京までの交通費のことを思ったら全然痛くないし、ノベルティがあんなにたくさん届いたら、なんか申し訳なくなるぐらいでした。

オンラインなので、直接いろいろな方々とコミュニケーションを取ることはできませんでしたが、Discard やコメントなどで結構面白くやりとりができて楽しかったです。
逆にリアルに会場に行ってひとりぼっちでいるよりもコミュニケーションできていたかもしれません。

次に特に感激したトーク・アンカンファレンスについて書きます。

## 「予

元記事を表示

GCP GAEにGitHub ActionsでLaravelをデプロイする

Google Cloud Platform(GCP)のGoogle App Engine(GAE)にGitHub Actionsを使ってLaravelをデプロイします。

## 前提

– [Cloud SDK](https://cloud.google.com/sdk/docs?hl=ja)等諸々インストール済み
– プロジェクトなど元々ある前提
– 手順のみで詳しい解説は省きます(参考リンク参照ください)

## 【重要】サービスアカウントキーを使った認証は非推奨

サービスアカウントキーを使った認証は非推奨であり、今後のリリースで削除となります。
ワークロードID連携(Workload Identity Federation)が推奨されます。

### 2021/10/27 GitHub Actions OpenID Connect (OIDC) サポート

GitHub Actions の OpenID Connect サポートについて
https://zenn.dev/miyajan/articles/github-actions-support-openid-connect

元記事を表示

PHP 関数の引数にデフォルトの値を設定

## 用途
– functionの引数にデフォルト値を設定したいときに使う。
– 関数内で変数を宣言することが省ける場合がある。

## 使用方法
“`php:書き方
function 関数名 ( 引数 = 設定したいデフォルト値 ) {
// 関数が呼ばれた時の処理を書く
}
“`
関数の引数に `=` をつけてデフォルト値を設定する。

“`php:例
function hoge ($hoge1 = 1, $hoge2 = 2) {
$add = $hoge1 + $hoge2;
var_dump($add);
}

hoge();
// 引数を指定しないで呼び出した結果
// 3 (1+2が行われた)

hoge(2, 3);
// 引数に 2 と 3 を指定して呼び出した結果
// 5 (2+3が行われた)
“`
※関数を呼び出すときに引数を指定すると、デフォルト値ではなく呼び出し時に指定した値が使われる。
 

**デフォルト値を設定した引数と、指定していない引数を混合で使うこともできる**
“`php:例
function 関数名 ( 引数, 引

元記事を表示

【Laravel】取得した配列が空かどうかを判別し、空の場合メッセージを返すメソッド

## 1. confirmEmptyArrayメソッド
“`App/Lib/MyFunc.php

元記事を表示

【メモ】Composerのインストール

web系のサーバーサイドエンジニアを目指す奴のメモ書きです。
インストール環境:Windows10

# Composerのインストール手順
公式サイトから最新のインストーラー(v2.3.4)をダウンロード
インストーラーがあればいつでも最新のComposerをダウンロードインストールできるよ。
https://getcomposer.org/

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626978/17b59211-eb54-6861-4c6c-0619f641af40.png)
堂々たるホーム
Downloadクリックすると別画面に遷移

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626978/e6aca216-fe31-abdf-7a26-666cc81e6fe4.png)
画像では日本語がおかしいところがあるので書き直す
“`
インストーラー(PHPが既にインストー

元記事を表示

[Drupal]この画面を閉じるボタンの作り方

## やりたいこと
クリックすると現在の画面を閉じるボタンを作りたい
![スクリーンショット 2022-04-13 13.09.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253501/ae3dc835-8323-1119-3da8-dda1d338bdc2.png)

## やり方

### ボタンの作成
フォームもしくはレンダリング配列にボタンの配列を追加する。JS側で目印にするため任意のクラスを付与しておく

[class Button](https://api.drupal.org/api/drupal/core%21lib%21Drupal%21Core%21Render%21Element%21Button.php/class/Button/8.2.x)
“`php
$form[‘actions’][‘close_tab’] = [
‘#type’ => ‘button’,
‘#value’ => ‘この画面を閉じる’,
‘#attributes’ => [

元記事を表示

[OCI]Oracle Autonomous Linux 7.9にOracle Instant Client 21c+SQL*Plus+Apache+PHP+php-oci8をセットアップしたときのメモ

rootユーザにスイッチ
“`
sudo su –
“`

Oracle Instant Client 21cとSQL*Plusをインストール
“`
yum install -y oracle-instantclient-release-el7
yum install -y oracle-instantclient-sqlplus
“`

環境変数の設定
“`
cat <<'EOL' >> /etc/profile
export ORACLE_HOME=/usr/lib/oracle/21/client64/lib
export NLS_LANG=Japanese_Japan.AL32UTF8
export LD_LIBRARY_PATH=$ORACLE_HOME:$LD_LIBRARY_PATH
EOL
“`

Apache + PHP + php-oci8のインストール
“`
yum install -y oracle-php-release-el7
yum install -y php php-oci8-21c
“`

Apacheの.phpファイルのハンドラー

元記事を表示

ヒアドキュメント 「<<<」 PHP

## 用途
– 変数に複数行の文字列を代入する時に使う。

## 使用方法
“`php:例

// 結果
おはよう
こんにちは
こんばんわ
“`
– ヒアドキュメントを使う際には、`=` + `<<<` + `ID`の順で書く。 例ではABCがIDにあたる。 - IDからIDまでの文字列を代入する。 例ではABCからABCの間に書いてある文字列が代入される。 - IDはルール内であれば自由につけることができる。(ABCに意味はありません) ### 文字列の中で変数を使用する場合 ```php:例

// 結果
varの値はtrue
“`
– 変数を使用する際は、開始のIDをダブルクオートで囲う。
※シングルクオートだと変数名がそのまま表示される。

 
 
 
下記の記事を参考に執筆しました。
– https://www

元記事を表示

【メモ】XAMPPの同梱物確認とインストール

web系のサーバーサイドエンジニアを目指す奴のメモ書きです。
インストール環境:Windows10

# XAMPPインストール

XAMPPのダウンロードサイトにアクセス
https://www.apachefriends.org/jp/download.html

### 何が含まれていますか?
![image.p//ng](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626978/e6ec66e6-4b6e-64ae-5440-b1e429c59479.png)

XAMPPに同梱されているものはこんな感じ↓
|ソフト名|バージョン|概要|
|—|—|—|
|Apache|2.4.53|Webサーバ|
|MariaDB|10.4.24|データベース管理システム|
|PHP|8.1.4|プログラミング言語|
|phpMyAdmin|5.1.3|MySQL/MariaDBをブラウザで管理するためのソフト|
|OpenSSL|1.1.1|暗号通信プロトコルSSLおよびTLSの機能を実装した、ライブ

元記事を表示

【備忘録】.phpから別の.phpを実行する

web開発初心者の備忘録です。
ガラパゴスでも自家消費用だからへーきへーき。
# ポイント
include関数とrequire関数を使用することで、外部の.phpを参照する事ができる。(.phpに限らずファイルなら何でも読み込める?未検証。)
それぞれの違いは以下の通り。
– include関数 → ファイルを読み込めなかった際、E_WARNINGを発生させるが、処理は強行する。
– require関数 → ファイルを読み込めなかった際、E_COMPILE_ERRORを発生させて、処理も止まる。

https://www.php.net/manual/ja/function.require.php
# ファイル構成
“`
IISでルートに設定しているフォルダ
 └ test
   ├ main.html
   ├ main.php
   ├ lib.php
   ├ main.js
   └ jquery-3.6.0.js
“`
# ソースコード
### main.html
“`html


元記事を表示

EC2上のLaravelプロジェクトでmbstringが使えない

# エラー内容
EC2上にデプロイしたらパスワード変更メール送信時に以下のエラーが出た。
“`
Call to undefined function mb_strcut()
“`

# 原因
ローカルで開発していた時にはデフォルトでmbstringがインストールされていたが、EC2上ではmbstringをインストールしないといけないらしい。

# 対策
①php-mbstringをインストール
②php.iniを編集
③php-fpmを再起動

### ①php-mbstringをインストール
“`
sudo yum install php-mbstring
“`

### ②php.iniを編集
php.iniは記述量が多いので/mbstringで探す。
“`/etc/php.ini
;mbstring.language = Japanese

mbstring.language = Japanese

;mbstring.internal_encoding =

mbstring.internal_encoding = UTF-8

;mbstring.http_i

元記事を表示

PHPのパスを変更

# バージョンを確認
PHPのバージョンを確認するには

“`php
taro@MacBook-Pro % php -v
PHP 8.1.4 (cli) (built: Mar 18 2022 09:46:02) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.4, Copyright (c) Zend Technologies
with Zend OPcache v8.1.4, Copyright (c), by Zend Technologies
“`

使用する PHP を確認するには

“`php
taro@MacBook-Pro ~ % which php
/usr/local/bin/php
“`

# .bash_profile の変更
MAMPのPHP にパスを通すには、次のコマンドを実行するみたいです。

“`
$ export PATH=/Applications/MAMP/bin/php/php*.*.*/bin:$PATH
“`
1点注意点で “`*.*.*“` は使用するバージョン番

元記事を表示

OTHERカテゴリの最新記事