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

PHP関連のことを調べてみた2022年02月26日
目次

【翻訳】php_filter_float()の脆弱性について(CVE-2021-21708)

## 元記事

今回は、こちらの記事を翻訳してみました。
誤訳等ありましたら、コメント欄にて教えていただけますと幸いです。

https://nakedsecurity.sophos.com/2022/02/18/irony-alert-php-fixes-security-flaw-in-input-validation-code/

## 本編

PHPを利用されている方々は、現在自分が利用しているPHPバージョンが最新かどうか確認しましょう。

– PHP7.4 -> **7.4.28**
– PHP8.0 -> **8.0.16**
– PHP8.1 -> **8.1.3**

上記、PHP最新バージョンが**2022-02-17**にリリースされました。
最新バージョンでは、php_filter_float関数が原因のuse-after-free脆弱性[^4]([CVE-2021-21708](https://access.redhat.com/security/cve/cve-2021-21708))を含む、[複数のメモリ管理に関するバグが修正](https://www.p

元記事を表示

【WordPressセキュリティ対策】投稿者アーカイブを無効化してWordPressのユーザ名を隠す方法

WordPressで構築したサイトのアクセスログを見ると、ページには表示させていないのに何故かログインアカウントでアタックされている場合があります。
これはWordPressが自動生成する投稿者アーカイブが有効になっているからです。攻撃者はこの機能を悪用して不正ログインを試みます。

## 投稿者アーカイブとは

投稿者アーカイブとは、WordPress が自動生成する投稿者ごとの投稿をまとめる機能のことです。
ちょっと技術的なことを言うと、テーマの`author.php`に規定されているページのことです。
初期状態のWordPressでは投稿者ごとに投稿者アーカイブが作成されます。そのため、WordPressのユーザー名が閲覧者にバレてしまい、大いなるセキュリティの穴となることがあります。

## 投稿者アーカイブを見る方法

WordPressサイトで、以下のようなURLにアクセスすると、対象ユーザーが作成した投稿の一覧ページが表示されます。

“`
http://example.com/author/ユーザー名/
“`

また、以下のように`?author=1`を付けてアクセ

元記事を表示

WordPress5.5で標準搭載されたXMLサイトマップ機能を無効化する方法

WordPress5.5からXMLサイトマップを出力する機能が標準で追加されました。
Google XML Sitemapsとか別のプラグインを使ってXMLサイトマップを出力している場合が多いと思います。
そういったすでに使っている機能が重複しないよう、標準のXMLサイトマップ機能を無効にする方法をまとめておきます。

## 追加されたXMLサイトマップ機能

はじめに、新たに標準搭載されたXMLサイトマップ機能についての説明です。
XMLサイトマップ機能はWordPress5.5から自動で有効になっていて、`wp-sitemap.xml`というファイル名でアクセスできます。
`$ドメイン/wp-sitemap.xml`というURLにアクセスすると、下記のようなサイトマップが表示されます。

![xmlサイトマップ-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1017333/8a25d874-dd67-556a-6ef5-84e9e5872579.png)

> **補足事項**
> `wp-si

元記事を表示

【個人開発】教員向け授業計画作成サービスを作ってみた。

# はじめに
![teaching_plan.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1185943/ca1828d9-c3fc-75a4-95a4-e25738e5939c.png)

こんにちは、まーです。
【Twitter】

【今回作成したサービス】
https://teachingplan.msy-a.com/

今回は、以前Laravel+Vue.jsで作成した**授業計画(指導案)作成サービス**をご紹介したいと思います。

# 要件概要
### ○導入
日々多忙な教員にとって毎回の授業内容(指導案)を**スピーディー**に作成することはとても重要になります。

特に、教育実習生や教員になったばかりの先生は、授業の経験値がなく、毎時間授業の計画を考えることは大きな負担です。自分自身の教育実習に行った経験、教員の友人からのヒアリングから間違いないと思います。

授業計画を効率的に作成することは、**授業の質**に関わ

元記事を表示

【Laravel】PHPUnitの実行でDBを汚染しないためにできる簡単なこと

# 環境

OS: Windows 10
PHP: 8.1.2
Laravel Framework: 8.81.0
docker-compose: 1.29.2
PHPUnit: 9.5.10
MySQL: 8.0

`Laravel Sail`を使用して、Laravelプロジェクトを立ち上げています。
プロジェクトを立ち上げる部分は、[こちらのドキュメント](https://readouble.com/laravel/8.x/ja/installation.html#your-first-laravel-project)でご確認ください。

# `RefreshDatabase` DBの状態に影響されずテストする

`use RefreshDatabase;`をしてあげると、
__テストを実行する際に前後のDBの状態を考える必要がなくなります__

各テスト毎にDBをリフレッシュするため、まっさらな状態にしてくれるので、
DBの状態を確認するアサーションである

– `$this->assertDatabaseCount(…)

元記事を表示

Laravel8 Localhostリダイレクトエラーの解決方法が意外と簡単だった件について

### エラー内容
![スクリーンショット 2022-02-25 13.24.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2525372/9c8a35cf-b861-6482-a8db-00647deb3aad.png)

https://reffect.co.jp/laravel/laravel-multi-authentication-understand#i-9

Laravelでマルチ認証を追加しようと思い、上記の記事を見ながら
作成していたところ
登録ボタンを押すと、リダイレクトエラーになってしまいました。

初めは、ルーティングやコントローラーなどでコーディングミスをしているのかと
色々調べて、試してみたのですが
一向に解決せず、正直絶望していました。

### 解決方法
ある時、エラー画面に出ている「Cookieを消去してみてください」という言葉に
従ってCookieを削除してみました。
(以前、同じようなエラーでCookieを消去しても変化がなかったので、試してませんでした)

元記事を表示

PHPUnitとGitHub ActionsとCoverallsを繋げて自動的に更新されるカバレッジのバッジを生成する

GitHubを見ているとREADMEにコードのカバレッジが書かれたバッジが貼ってあるのをよく見ますが、アレを実際に自分が作っているPHPのライブラリのレポジトリに貼ってみたのでその方法を紹介します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41743/ddd0bbb6-6840-6a8a-0a38-974dc621abdb.png)

今回はCoverallsというテストのカバレッジの結果を収集してくれるサービスを利用してバッジを作りました。

また、手作業でカバレッジのレポートを上げるのは効率が悪いので、GitHub Actionsを用いてコードが変更されると自動で上げるようにしました。

## 用意するもの
– GitHub Actionsの設定
– テストを実行してカバレッジレポートを送信するのに必要です
– Coverallsのアカウント
– あらかじめGitHubと連携しておいてください
– テストされるコードとテストコード

## Coverallsと

元記事を表示

CentOS8×PHP7.3「Failed to download metadata for repo ‘AppStream’」で怒られる時

## 現象
~~~
Error: Failed to download metadata for repo ‘AppStream’: Cannot prepare internal mirrorlist: No URLs in mirrorlist
~~~

## 原因
2021年末でCentOS8のサポートが切れたので、**ミラーサイトが停止している**ご様子でした。?

## 解決策
リポジトリのダウンロードの向き先を**アーカイブ**に変更します!
“`
$ sed -i ‘s/mirrorlist/#mirrorlist/g’ /etc/yum.repos.d/CentOS-*
$ sed -i ‘s|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g’ /etc/yum.repos.d/CentOS-*
“`
## PHPのバージョンを変更する場合
CentOS8のデフォルトのPHPバージョンは**PHP7.2**になります。
**別バージョン**を使用したい場合は、remiリポジトリを使

元記事を表示

Laravelのeloquentでjoinしたときに同じカラム名でバグる可能性

aテーブルのid=1

bテーブルのid=2でa_id=1だとして、
これをjoinすると

“`php
$a = A::join(‘b’, ‘a.id’, ‘=’, ‘b.a_id’)->first();
“`

とする。

このとき

“`php
$a->id; // 2
“`

となる現象が起きました。
同じidというカラム名だからっぽいです。
このままだとidをキーにするのでリレーションで辿るデータなどがうまくとれないなど発生します。
知らないと結構やらかしそうな内容です。

回避は

“`php
$a = A::select(‘*’, ‘a.id as id’)->join(‘b’, ‘a.id’, ‘=’, ‘b.a_id’)->first();
“`

とかですね。
あとはこれを起こさないためのグローバルスコープなんかもissueに書かれてました。

“`php
trait OnlyMyColumnsTrait
{
public static function bootOnlyMyColumnsTrait()
{
stati

元記事を表示

【Laravel】laravel-adminの導入から初期設定まで

# 概要
laravel-adminを利用して、インストールから初期設定までを行います。
実務でLaravelを使う機会があればlaravel-adminを使用する場面があるかもしれないのでこの機会にまずは設定をしていきます。

※Laravelプロジェクトがインストール済みの前提で進めます。

# laravel-adminとは
Laravelで簡単に管理画面が構築できるライブラリです。

ドキュメントやデモサイトなど使用するために必要な資料が充実しており、難しいカスタムを行う必要がなければものすごく簡単に管理画面が構築できます。

[公式ドキュメント](https://www.ritolab.com/entry/208#:~:text=%E7%84%A1%E5%90%8D%E3%82%AF%E3%83%A9%E3%82%B9-,%E6%A6%82%E8%A6%81,%E6%91%A9%E6%93%A6%E3%82%92%E6%B8%9B%E3%82%89%E3%81%99%E3%81%93%E3%81%A8%E3%81%A7%E3%81%99%E3%80%82)

[demoサイト

元記事を表示

php xml request with curl

“`



Rahul kumar
10
5th
25

‘;

$url = “https://www.website.com/ws”;

$ch = curl_init();
if (!$ch) {
die(“Couldn’t initialize a cURL handle”);
}
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt

元記事を表示

[Laravel] HTTPS での接続を強制する

Laravel を使ったサイトをさっき検証環境、本番環境にリリースしたらHTTPとHTTPSが混在してるよ!!という事でうまく動きませんでした。

“`
{!! Form::open(array(‘url’ => ‘/login’, ‘role’ => ‘form’, ‘name’ => ‘loginForm’, ‘id’ => ‘loginForm’, ‘class’ => ‘login’)) !!}
“`

こういう記述があるとHTTPSページ内にあるフォームのPOST先がHTTPになってエラーになったりします。

こちらの解決方法を以下に記します。

# 結論
web.php に以下を記述します。

“`php
if (App::environment(‘production’) || App::environment(‘staging’)) {
URL::forceScheme(‘https’);
}
“`

`App::environment(‘production’)`は本番環境の.envファイルに`APP_ENV=production`と記述されている前

元記事を表示

Laravel で主キー(プライマリキー)を ULID で登録する方法

# 環境

Laravel Framework 8.54.0
PHP 8.0.9
docker-compose version 1.29.2
rorecek/laravel-ulid:^2.0

# 手順

## `rorecek/laravel-ulid`

https://github.com/rorecek/laravel-ulid

まずは、`rorecek/laravel-ulid`のインストールを行います。
ターミナルを開き、以下のコマンドを入力します。

“`sh:ターミナル(sail)
$ ./vendor/bin/sail composer require rorecek/laravel-ulid:^2.0
“`

“`sh:ターミナル(composer)
$ composer require rorecek/laravel-ulid:^2.0
“`

これで、インストールは完了しました。

## マイグレーション

次に、マイグレーションから編集していきます。
今回はユーザに関しての変更を行おうと思うので、
デフォルトの`database/migration

元記事を表示

Laravel9.x変更点

# はじめに
[LaravelのUpgrade Guide](https://laravel.com/docs/9.x/upgrade)をもとに影響度がミディアム以上のものを日本語訳もといDeepLにつっこんでみたものです。
明らかに変な日本語になってると感じたとこは自力で頑張ります。

# 目次
[依存関係の更新](#依存関係の更新)
[PHPの戻り値の型](#PHPの戻り値の型)
[アプリケーション](#アプリケーション)
[Flysystem_3.x](#Flysystem_3.x)
[ヘルパー関数](#ヘルパー関数)
[HTTP Client](#HTTP_Client)
[Symfony_Mailer](#Symfony_Mailer)
[Packages](#Packages)
[Test](#Test)
[Validation](#Validation)

# 依存関係の更新
PHPのバージョンは 8.0.2以上を必要とします。

composer.jsonで以下の依存関係を更新する必要があります。

– laravel/framewor

元記事を表示

twitterを快活クラブから借りたパソコンでリモワで見るWebサービス

https://jflabo.naturum.ne.jp/e3467003.html

リモワ対応 借りたマシンでも仕事できるように調整中

一時行政系も 効率よく情報を配信する道具として使っていましたね
あのあと使えなくなった人が結構いて 悩ましいです。

元記事を表示

GitHub Actions workflowについてのススメ

# 概要

`GitHubActions`を利用したテストワークフローの構築について社内布教用にまとめてみた

# 経緯

@ucan-lab さんのハンズオンに参加して個人的に導入はしているがチーム内で技術共有をしてなかったので布教用としてまとめることにしました
なお、今回の`workflow`については以下のハンズオン資料を流用させていただいています。

https://qiita.com/ucan-lab/items/56c9dc3cf2e6762672f4#github-actions-%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%83%93%E3%83%AB%E3%83%89%E3%83%86%E3%82%B9%E3%83%88%E3%82%92%E6%9B%B8%E3%81%8F

https://php-builders.connpass.com/event/239066/

# 解説

https://docs.github.com/ja/actions/learn-github-actions/understanding-githu

元記事を表示

[OCI]ウォレットを使用せずにPHPアプリケーションからAutonomous DatabaseにTLS認証で接続してみた

#はじめに
[こちら](https://qiita.com/500InternalServerError/items/6822718140afc4e8884e)の記事では、ウォレットを使用せずにSQL*PlusからAutonomous DatabaseにTLS認証で接続できることを確認しました。

今回は、php-oci8を使用したPHPアプリケーションから、ウォレットを使用せずにSQL*PlusからAutonomous DatabaseにTLS認証で接続してみます。

[こちら](https://qiita.com/500InternalServerError/items/6822718140afc4e8884e)の記事で作成したAutonomous DatabaseとComputeインスタンスを使用して環境を構築します。

#1.PHP、php-oci8、httpd(Apache2)のインストールと設定
yumコマンドでPHP、php-oci8とApache2をインストールします。

“`
[opc@compute1 ~]$ sudo yum install -y oracle-

元記事を表示

APIから気象情報を取得してグラフ化

#はじめに
OpenWeatherMapAPIから気象情報を取得してChart.jsを使ってグラフ化してみました。
例として、「現在の時刻から24h後までの東京都の気温の変化」を取得します。

環境
– Laravel6系(PHP)
– OpenWeatherMapAPI
– Chart.js(JavaScriptライブラリ)

##ソースコード例
“`ChartController.php
‘各自で取得’,
‘lat’ => ‘26.231408’, //沖縄の那覇市の緯度
‘l

元記事を表示

これでわかるLaravel8.Xのマルチ認証(Multi Auth)の設定方法

https://reffect.co.jp/laravel/laravel-multi-authentication-understand#i-5

“`web.php
Route::prefix(‘employee’)->namespace(‘Emplyee’)->name(‘employee.’)->group(function(){
Auth::routes();
});
“`

“`command
php artisan route:list
“`
ここで、修正してもLaravel8を使用している方は、エラーが出ちゃうと思います。
それはルーティングの指定がLaravel7とLaravel8で
変更になったからです。

その対処法はこちら

“`php
->namespace(‘App\Http\Controllers\Emplyee’)
“`

これで、OKです!

詳しくはこちらの記事を参考にしてみてください!

https://zakkuri.life/laravel-laravel8%E3%81%AE%E3%83%AB%E3%83%BC%E3%83%

元記事を表示

10: 多次元配列,

多次元配列

配列/連想配列の要素として格納できるのは、数値や文字列ばかりでは無い。

任意の型の値、例えば配列そのものを格納してもかまわない。

入れ子の配列

具体例

“`
$data1 = [
[‘x-1’, ‘x-2’, ‘x-3’],
[‘y-1’, ‘y-2’, ‘y-3’],
[‘z-1’, ‘x-2’, ‘x-3’],
];

“`

配列$data1

||0|1|2|
|:-:|:-:|:-:|:-:|
|0|[0,0]x-1|[0,1]x-2|[0,2]x-3|
|1|[1,0]y-1|[1,1]y-2|[1,2]y-3|
|2|[2,0]z-1|[2,1]z-2|[2,2]z-3|
上記は二次元配列

このように「配列の配列」を表すようなケースでは、最低限、要素ごとに改行とインデントを加えると構造が分かりやすくなり、コードも読みやすくなる。

構文規則ではないが、

元記事を表示

OTHERカテゴリの最新記事