PHP関連のことを調べてみた2020年09月30日

PHP関連のことを調べてみた2020年09月30日

Laravel Target [App\Repositories\〇〇[BInterface] is not instantiable while buildingのエラーが出た

# 目的

– エラー「Target [App\Repositories\リポジトリインターフェースファイル名] is not instantiable while building 」のエラーが出て解決した話をまとめる

# is not instantiable while building系のエラーの大体の原因

– 筆者が経験した当該エラーでの問題箇所の代替がtypoやbindのミスであった。
– use宣言部分、関係しそうなファイルのnamespace部分、ファイル名とclassの部分が一致しているか、bindの方法は間違っていないかを今一度確認していただきたい。
– サービスファイル、リポジトリインターフェースファイル、リポジトリファイルは`$ php artisan`コマンドで作成できない。(はず)
– 手打ちの部分が多くなると自分のような初心者だとtypoや記載ミスが多発するのでゆっくり落ち着いて再確認してみよう。

# エラー内容

– DBアクセス処理をサービスとリポジトリに分割していざブラウザで確認使用としてたところ下記のエラーが発生した。

“`err

元記事を表示

Ubuntu 16へのZabbixサーバとZabbixクライアントのインストール

この記事では、**Ubuntu 16**に**Zabbixサーバ**と**Zabbixクライアント**をインストールする際の情報をご紹介します。

*本ブログは英語版からの翻訳です。オリジナルは[こちら](https://www.alibabacloud.com/blog/how-to-setup-zabbix-on-ubuntu-16-04_594776)からご確認いただけます。一部機械翻訳を使用しております。翻訳の間違いがありましたら、ご指摘いただけると幸いです。*

#序章
Zabbixはオープンソースのエンタープライズクラスのネットワーク監視ツールで、サーバやネットワークデバイス、その他のネットワークコンポーネントのパフォーマンスや可用性を監視することができます。ZabbixはMySQL、PostgreSQL、Oracleを使用してデータを保存します。また、Zabbixはデータや設定を監視・追跡するためのユーザーフレンドリーなWebインタフェースを提供しています。ZabbixはZabbixエージェントを使用してデータを収集し、Zabbixサーバに送信します。

このチュートリア

元記事を表示

Alibaba Cloud ECSインスタンスにDolibarrをインストール

このチュートリアルでは、**Alibaba Cloud ECSインスタンス**に**Dolibar**をインストールして設定する方法を学びます。

*本ブログは英語版からの翻訳です。オリジナルは[こちら](https://www.alibabacloud.com/blog/install-dolibarr-on-alibaba-cloud_595223)からご確認いただけます。一部機械翻訳を使用しております。翻訳の間違いがありましたら、ご指摘いただけると幸いです。*

#前提条件
– Alibaba Cloud [Elastic Compute Service (ECS)](https://www.alibabacloud.com/ja/product/ecs)を有効にし、有効な支払い方法を確認する必要があります。新規ユーザーの場合は、新規アカウントで[300ドル~1200ドル相当のAlibaba Cloudクレジットを獲得](https://www.alibabacloud.com/ja/referral?referralCode=ffxt3q)できます。ECSインスタンスのセットア

元記事を表示

CentOS 7でElastic Compute ServiceにBookStack Documentation Wikiをインストール

この記事では、**CentOS 7**へのBookStackのインストールについての情報を得ることができます。

*本ブログは英語版からの翻訳です。オリジナルは[こちら](https://www.alibabacloud.com/blog/installation-of-bookstack-on-centos-7_594808)からご確認いただけます。一部機械翻訳を使用しております。翻訳の間違いがありましたら、ご指摘いただけると幸いです。*

#PHPとPHP-FPMのインストール
これで、システムにnginxのWebサーバーがインストールされました。次に、BookStackをインストールするために必要な拡張機能を備えたPHPとPHP-FPMをインストールします。

以下の rpm コマンドを使用して、CentOS 7 システムに新しい ‘webtatic’ リポジトリを追加します。

“`
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
“`

ここで、[PHP](https://www.alib

元記事を表示

【PHP】コメントを書く際に注意すること

前回は、[「コメントを書くべきか、書かないべきか」](https://qiita.com/hommayade/items/5435eb187908d5083bce)について述べましたが、
今回は、「コメントを書く際の注意点」について、
自分なりの意見を書いてみたいと思います。

##コメントを書く際に一番重要視していること
大事なことは
####抽象性をなくす
####(可能であれば)具体的にする

です。
可能であれば、と書いたのは
具体性を出すことで冗長になってしまったり、
わかりづらくなってしまったりするのであれば、
それを避けた方がいいからです。

例:

“`php5

// 注文商品の中に特定のメーカーがないか確認する
if ($order->hasHogeProducts()) {
return;
}
“`

「確認」はソースを理解するための言葉としては、ほとんど何の意味も持ちません。
どのように確認するのか、確認したら何をするのか、といった情報の方が大切です。

また「特定の」ではなく、具体性を持たせられるなら(短くまとめられるなら)
具体的に書いてしまっていいと

元記事を表示

Moodle 3.9 マニュアル – アクティビティ

[本文](https://docs.moodle.org/39/en/Activities)

# アクティビティ

アクティビティは、Moodleコースの機能グループの総称です。通常、アクティビティとは、生徒が他の生徒や教師とやり取りするために行うことです。

Moodleの用語では、フォーラムやクイズなどのアクティビティは、生徒が直接貢献できるものを適切に意味し、教師から生徒に提示されるファイルやページなどのリソースとは対照的です。ただし、アクティビティという用語は、便宜上、アクティビティとリソースの両方をグループとして指す場合もあります。

標準のMoodleには14種類のアクティビティがあり、編集をオンにして「アクティビティまたはリソースを追加」リンクをクリックすると表示されます。

[課題](https://docs.moodle.org/39/en/Assignment_activity)
教師がアップロードされたファイルやオンラインおよびオフラインで作成された課題に採点してコメントを付けることができるようにします
[チャット](https://docs.moodle.or

元記事を表示

Moodle 3.9 マニュアル – リソース

[本文](https://docs.moodle.org/39/en/Resources)

# リソース

リソースは、ファイルやリンクなど、教師が学習をサポートするために使用できるアイテムです。 Moodleは、教師がコースに追加できるさまざまなリソースタイプをサポートしています。編集モードでは、教師は[アクティビティまたはリソースの追加]リンクを介してリソースを追加できます。リソースは、リソースのタイプを表すアイコンが前に付いた単一のリンクとして表示されます。

管理者は、[管理]> [プラグイン]> [アクティビティモジュール]> [共通設定​​]でサイト全体の設定を有効または無効にすることで、教師に各リソースの説明を追加するように強制するかどうかを決定できます。

[ブック](https://docs.moodle.org/39/en/Book_resource)-本のような形式の複数ページのリソース。教師は自分の本をIMSCPとしてエクスポートできます(管理者は教師の役割にIMSのエクスポートを許可する必要があります)
[ファイル](https://docs.moodle.

元記事を表示

exif_imagetype()で画像かどうかを判別してはいけない

# はじまり
マイナーなWordPressプラグイン[Simple:Pressに脆弱性が見つかりました](https://blog.nintechnet.com/wordpress-simplepress-plugin-fixed-critical-vulnerabilities/)。認証無しでPHPスクリプトをアップロードして任意コード実行できる脆弱性なので致命的なものと言えます。

この記事の数日後、Qiitaで@satorunooshieさんの[PHPによる(複数)画像アップロード処理](https://qiita.com/satorunooshie/items/f9ff5a9c3ece45b5a6ce)という記事を目にすることになります。ここで2つの記事に関連性が見られたので、本稿を書こうと思います。

# 意外な落とし穴
問題となったSimple:Pressには、ファイルアップロード時に認証を回避できる脆弱性があったわけですが、それでもまだアップロードされたファイルが画像かどうかチェックする機構があれば、任意コード実行のような大きな問題にはならなかったはずです。
ただし、実際

元記事を表示

【phpMyAdmin】 「構造」で「主キー」を表示させたい

#### プルダウンに格納されていた「主キー」を表示させたかった ####

※「プルダウン、ドロップダウン、リスト、セレクト」など呼び名はさまざまですが、この場では「▼その他」の中から選択する一手間を省きたかった。
##### 初めてって大変 #####
分からないことだらけ。未知の世界。
だから参考にしている教材と同じ表示にしたいではないですか。
だって右も左も分からない全くの未経験ですもの。そこで、タイトル通り「主キー」を表示したかったのです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691238/b0ad18aa-5ca2-38d7-b664-3a7f74d1929c.png)
初心者な私はググり倒した。それでも出てこない。
ちなみに表示したいのはココ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691238/dd09eeeb-6912-3e90-0a4e-7595957b

元記事を表示

PHP printf クラス インスタンス

# printf
printfとは「あるフォーマットに従った文字列を返す」関数です。
[構文]
sprintf(文字列のフォーマット, 入力したい文字1, 入力したい文字2, ・・・)
[例]
“%s 君は %s を %d 個食べました。”
「%s」には文字列を、「%d」には数値を代入することができます。ですので、
髙橋 君は パン を 100 個食べました。
という文章にしたい場合は、
sprintf(“%s 君は %s を %d 個食べました。”, “髙橋”, “パン”, 7)

と書くことで、「髙橋 君は パン を 100個食べました。」という文字列が返ります。
他にも沢山の指定子がありますので、活用していきたいと思います。
![スクリーンショット 2020-09-29 14.21.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663122/90114735-2d14-2abb-fd6e-8d711482ad5e.png)

# クラス
![スクリーンショット 2020-09-29 18.5

元記事を表示

PHP(+MySQL)のランダム関数を使ってガチャを作る話

## はじめに
ソーシャルアプリのガチャを作ったときの話。
無作為にデータを取り出すプログラムを書いたとき「なんだか偏るなぁ」と感じたので、
自分の中でどのやり方が課金者に平等で無作為(そして簡単に)にデータを取り出せるか調べてみたことを書きます。

## 使用している言語
PHP7.0.0、データベースはMySQL

## そもそもMySQLでランダムにレコードを取得してはいけない?
`SELECT * FROM ‘gacha’ ORDER BY RAND() LIMIT 1;`
超簡単に取得できる方法ではありますが、SQLアンチパターンであるので却下しました。

## PHPで取得したデータからランダムに取得

`rand()`、`mt_rand()`

どちらも擬似乱数を整数で返してくれるもの。
mt_randの方が数倍高速だということですので使うならmt_randかなぁと思いましたが
暗号学的に安全ではないようなのです。

* [PHP Manual – rand](https://www.php.net/manual/ja/function.rand.php)
* [PHP

元記事を表示

パスワードリセット時の有効期限つきワンタイムURL

今回解説していくのはパスワードリセット時の有効期限付きワンタイムURLの作り方です
流れは

– パスワードリセットのページでメールアドレスを入力
– メールアドレスが登録されていても登録されていなくても同じ文言を出力
– メールアドレスが登録されていた場合は有効期限付きワンタイムURLが記載されたメールを送信する
– パスワードを更新した場合は“5秒後“にログイン画面にリダイレクト

“`sendMail.php
getM

元記事を表示

Laravelルーティング

Laravelにおけるルーティングを説明していきます。

#ルーティングとは
ブラウザから任意のURLアクセスがあった場合、どのController処理を動かすのかを定義するところになります。記述する場所は`routes/web.php`になります。またHTTPメソッド(GET,POST,PUT等)も定義できます。下記のイラストの①の部分にあたります。
![imager.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F592457%2Feaa5bba7-9f47-284e-f2b3-1e763f99c0f3.png?ixlib=rb-1.2.2&auto=format&gif-q=60&q=75&w=1400&fit=max&s=58555dca816088974acb1b7184648ddd)
#ルーティングの書き方
記載する場所は`routes/web.php`になります。
例) ブログ一覧を表示したい

元記事を表示

Ubuntu 16.04を実行しているAlibaba Cloud Elastic Compute Service上でownCloudを設定

この記事では、**Ubuntu 16**を使用して**Alibaba Cloud** Elastic Compute Service (ECS)インスタンスに**ownCloud**をインストールする際に役立つ、いくつかの情報を入手できます。

*本ブログは英語版からの翻訳です。オリジナルは[こちら](https://www.alibabacloud.com/blog/how-to-setup-owncloud-on-ubuntu-16-04_594789)からご確認いただけます。一部機械翻訳を使用しております。翻訳の間違いがありましたら、ご指摘いただけると幸いです。*

Ubuntu 16.04を実行しているAlibaba Cloud Elastic Compute Service (ECS)上で独自のCloudサーバーを設定することができます。クラウドソフトウェアは[PHP](https://www.alibabacloud.com/blog/how-to-setup-php-on-ubuntu-16-04_594793?spm=a2c65.11461447.0.0.3b7136c

元記事を表示

Laravel Passportでgrant_typeを制限する

https://qiita.com/h1na/items/25a08122418df782d2b9
ここにほとんど書いてある

Laravel公式に追加しろって書いてある`Passport::routes();` ←これ

“`php
public function boot()
{
$this->registerPolicies();

Passport::routes();
}
“`

たどってPassport.phpをみてみると、 デフォルトのコールバックが`$router->all();`

“`php
public static function routes($callback = null, array $options = [])
{
$callback = $callback ?: function ($router) {
$router->all();
};
}
“`

all()って何?って思ったら`\Laravel\Passport\

元記事を表示

Laravelモデル

今回はmvcモデルのM(モデル)の作成をしていきます。
#Model
モデルとはビジネスロジックを書く場所になります。また、データを処理したり、データをDBに保存するところです。逆に、DBから情報を取り出して、Controllerに送ったりしてくれます。
![image](https://snome.jp/wp-content/uploads/2020/02/mvc02.png)
そして、Laravelでモデルを扱うにはEloquent ORM を使っていきます。
##Eloquent ORM
Laravelで提供されているデータ操作のための機能で、「モデル」と「DB」を対応付けてくれます。**ORM**とは「Object Relational Mapping」の略称で、プログラミング技法のことです。これにより、DBから取得してきた情報をオブジェクトとして扱う事ができます。
##Eloquentモデルの作り方

“`terminal
$ php artisan make:model モデル名
“`
* モ

Elastic ComputeService上のNginxおよびHHVMを使用したUbuntu16.04へのWordPressのインストール

この記事では、**Alibaba Cloud** Elastic Compute Service (ECS)上の**Ubuntu 16.04**に**Nginx**とHHHVMを使用して**WordPress**をインストールする方法について、いくつかの情報を得ることができます。

*本ブログは英語版からの翻訳です。オリジナルは[こちら](https://www.alibabacloud.com/blog/how-to-install-wordpress-on-ubuntu-16-04-with-nginx-and-hhvm_594782)からご確認いただけます。一部機械翻訳を使用しております。翻訳の間違いがありましたら、ご指摘いただけると幸いです。*

HHVMはHipHop Virtual Machineとしても知られており、Facebookが開発したオープンソースの仮想マシンで、HackやPHPで書かれたプログラムを実行するために使用することができます。HHVMは、パフォーマンスの理由からジャストインタイムのコンパイルアプローチを採用しています。HHVMはZENDの従来の[PHP

mysqlで新規ユーザーを作成する方法

1 まずはデフォルトユーザーであるrootでmysqlにログインする

>mysql -u root

2 ログインできたら、mysqlのユーザ一覧でどんなユーザーがいるのか確認する

>SELECT Host, User FROM mysql.user;

3 新しくユーザー作成する
>grant all on データベース名.* to ユーザー名@接続元 identified by ‘パスワード’;

4 現在rootでログインしてるためexitでログアウトする

5 新規で作成したユーザーでログインする
>mysql -u ユーザー名 -p

Laravel テストコードを書いてみよう

# 目的

– Laravelのフューチャーテストコードの書き方をまとめる

# 実施環境

– ハードウェア環境

| 項目 | 情報 |
| — | — |
| OS | macOS Catalina(10.15.5) |
| ハードウェア | MacBook Pro (13-inch, 2020, Four Thunderbolt 3 ports) |
| プロセッサ | 2 GHz クアッドコアIntel Core i5 |
| メモリ | 32 GB 3733 MHz LPDDR4 |
| グラフィックス | Intel Iris Plus Graphics 1536 MB |

– ソフトウェア環境

| 項目 | 情報 | 備考 |
| — | — | — |
| PHP バージョン | 7.4.8 | Homwbrewを用いて導入 |
| Laravel バージョン | 8.6.0 | commposerを用いてこちらの方法で導入→[Mac Laravelの環境構築を行う](https://qiita.com/miriwo/items/adaaaee

【PHP初心者向け】MySQLからSQL文で絞り込み、結果をサイトに表示する

##0.概要

デザイナーをやっていると、静的なサイトは作れるものの、
動的なサイトを作る時にはエンジニアに頼むことが多く、
自身で完結できないことが歯痒い時があります(実体験)。

そこで今回は、
データベース(今回はMySQL)に保存したデータを、
条件によって動的に出し分け(PHPで、SQLのクエリを書く)、
サイトに表示する方法を記載いたします。

##1.はじめに(データベースの準備)

まず最初に、データベース自体にデータを入れます。
借りてるレンタルサーバーのコントロールパネルから、
phpMyAdminにログインするか、
データベースをデータベース管理ツールと連携させましょう。

オススメの無料データベース管理ツールは下記の2つです。

|名前|特徴|入手先URL|
|:—|:—|:—|
|DBeaver|クラシカルなUIだが多機能。ER図というDBの繋がりを表示してくれる機能がある。※今回はこれを実例に進めて参ります。|https://dbeaver.io/|
|Metabase|ビジュアライズが充実している。クエリを知らなくともGUI上で色々できるのでデ