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

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

laravel6のIgnition問題

# 概要
システム保守の関係上、[JBNDB](https://jvndb.jvn.jp/)のRSSを常にチェックしているが、先日見た事ないような深刻度の脆弱性が出てきた。
・[Laravel 用の Ignition page における脆弱性](https://jvndb.jvn.jp/ja/contents/2020/JVNDB-2020-006168.html)
スクリーンショット 2020-07-03 10.13.04.png
きゅ、、9.8!!!??? ( MAX10 )
これはヤバいという事で対応したが、すんなりいかなかった話。
# Ignitionとは
[GitHub](https://github.com/facade/ignition)
laravel6から採用されたComposerパッケージのエラ

元記事を表示

読解メモ: PHP RFC: Make constructors and destructors return void

この記事は @carrotRakko が [PHP RFC: Make constructors and destructors return void](https://wiki.php.net/rfc/make_ctor_ret_void) を読み解いて自分なりにまとめなおしたものです。

英語の解釈や PHP の仕様/実装などなどについて間違っている部分を見つけたらご指摘くださると幸いです。

この記事を書いている時点で読んでいるリビジョンは [2020/07/02 23:13 のもの](https://wiki.php.net/rfc/make_ctor_ret_void?rev=1593731618) です。

# `__construct()` の返り値の型指定

型指定の仕方を3パターン考えてみます↓

1. 型指定なし: `__construct()`
1. 型指定あり & `void`: `__construct(): void`
1. 型指定あり & `void` 以外: `__construct(): bool`

## PHP 7.4.x では(事実)

| 型

元記事を表示

なぜサーバーサイド言語と合わせて、JabvaScriptを理解しておく必要があるのか。

PHPは通信を行わないと変化が起こらない。サーバーサイド。
例:現在時刻は、リロードした時にだけわかる。
JavaScriptは、通信がなくても変化が起きる。クライアントサイド。
例:現在時刻は、毎秒変わる。

javascriptのデメリットは、データの保存ができない。その時その端末のみのアクション、データ、記録。

Ajax(非同期通信)=JavaScript

元記事を表示

型を指定したからといって安心してはいけない(戒め

PHPネタです。

みんな強いから知ってると思うけど、僕は雑魚なのでメモがてら。

PHPにおけるキャストの動きをクラス生成(コンストラクタの挙動)を例に検証してみます。
PHP 7.3.11 で検証しています。

### あまり意識してなかったキャストの挙動について

下記のようなコンストラクタをもつクラスについて、数値以外の引数を渡してしまった場合、
本来であればエラーとなって欲しい気もしますが、おそらく数値型にキャストされるだろうなと推測する方が多いかと思います。

“`php

class MyTest {
private $param;
public function __construct(int $param) {
$this->param = $param;
}
}
“`

案の定、数値型にキャスト可能な文字列が引数に入っていた場合、文字列->数値へのキャストが行われ、
正常にオブジェクトが生成されます。

“`php
$obj = new MyTest(“1”);
var_dump($obj)

// Result
o

元記事を表示

PHP composerでext-httpエラーの解決方法

有益な記事がなく苦労したのでメモ

# 環境
PHP7.4(CakePHP3.5)
ローカル(mac mojaba 10.14.6)

# PhpStormで拡張モジュールはcomposer.jsonに書かないと警告が出るらしい
簡単にまとめるとタイトルの通り

ext-httpも例外ではないらしい
> php拡張由来の定数や関数などに依存しているときにcomposer.jsonにその依存が明示されていることを検査するらしい

でもそれを強制するってそんな大切か?って思うんですがw

詳しくは下記記事

# ネット上をサーフィンしまくって解決
“`bash

Problem 1
– The requested PHP extension ext-http * is missing from your system.
Install or enable PHP

元記事を表示

GuzzleでのAPI通信先でのデータ取得方法を知りたい

#結論
**POSTで送るなら$_POSTでいいじゃない!!!!!**

“`
$postData = $_POST[‘hoge’];
“`

これで取れます。

念の為

“`
if(isset($_POST[‘hoge’])){
$hoge = $_POST[‘hoge’];
} else {
// Error return
return 何らかのエラーコードなりをレスポンスすればよいでしょう
}
“`

とすればきっと良いはず。

半日の時間は何だったのかという己の愚かさと
$_POSTとか数年ぶりに書いたので今もこの書き方で良いのだろうか
という疑問も新たに生まれた

伸びしろと思いたい。

###ここからは元文

#$requestでデータが取れない

“`
$request->all();
“`

できっとPOSTからのデータは取得出来るはず、、、
そんな簡単に考えていたら、半日ハマってしまっている。

##環境
PHP7系(APIも)

元記事を表示

Laravel Log dailyログとerrorログを別々に出力する

# 目的

– エラーログだけ別ファイルに出力して欲しい時の方法を下記に記載する。

# 実施環境

– Macのローカルに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.3 | Homwbrewを用いて導入 |
| Laravel バージョン | 7.0.8 | commposerを用いてこちらの方法で導入→[Mac

元記事を表示

【PHP】添字配列をarray_mergeすると、配列の連番が0からになる

###添字配列をarray_mergeすると、配列の番号が0からの連番になる

“`php

// 2つの配列をarray_mergeする
$array1 = [
‘101’ => ‘red’,
‘103’ => ‘yellow’
];

$array2 = [
‘100’ => ‘blue’
];
“`
予想する返却値

“`php

array(3) {
[100]=>
string(3) “blue”
[101]=>
string(6) “red”
[103]=>
string(4) “yellow”
}
“`
実際の返却値

“`php

$array_merge = array_merge($array1, $array2);

var_dump($array_merge);

// 実行結果
array(3) {
[0]=>
string(3) “red”
[1]=>
string(6) “yellow”
[2]=>
string(4) “blue”
}
“`

###例えば
以下のような

元記事を表示

PHP7.4開発環境をUbuntuに作成

#前提条件
– virtualboxをインストール済
– vagrantをインストール済

“`ruby:Vagrantfile
# -*- mode: ruby -*-
# vi: set ft=ruby :

# All Vagrant configuration is done below. The “2” in Vagrant.configure
# configures the configuration version (we support older styles for
# backwards compatibility). Please don’t change it unless you know what
# you’re doing.
Vagrant.configure(“2”) do |config|
# The most common configuration options are documented and commented below.
# For a complete reference, please see the onlin

元記事を表示

ラズパイで温湿度とCPU温度の取得とグラフの表示

[エアコンをラズパイから操作できるようになった](https://qiita.com/yktk435/items/dabc790d6335e90dd416)ので、室温と湿度をから自動的にエアコンをつけたいと思った。

温湿度は前の[記事](https://qiita.com/yktk435/items/8bf45e8a96ea12ed457a)を参考にBME280で取得する。
ついでにラズパイのCPU温度も取得してグラフにする。

まずは完成したグラフがこちら
![スクリーンショット 2020-07-02 16.14.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/136271/3dbb3715-9ea6-d291-4b3a-a81ccc0c4db8.png)

#コード

“`javascript
window.onload = function() {
view();
let sl = document.querySelector(“select.date”)
sl.value =

元記事を表示

nginx1.18 + php7.4.5 エラー対処メモ

# 目次
– 前置き
– 環境

#前置き
### **これはあくまで自分用のメモであり、また行う場合は必ずバックアップをとること**

# 環境
– Amazon Linux2
– nginx1.18
– php7.4.5

# エラー
## 404
– nginxがnginx.confで設定したrootに対してのパーミッション確認
– /etc/php-fpm.d/www.confをuser:nginx group:nginx にする
– その後sudo systemctl restart php-fpm でphp-fpmを再起動
– /var/log/php-fpmの所有ユーザーは初期ではapacheになっている
– chown nginx: php-fpm でnginxに変更する

###

元記事を表示

【Laravel】自作ヘルパー

# ヘルパーを自作する
ページのタイトル名を返すヘルパーを例にヘルパーの作り方を説明してみる
手順は以下のとおり

 1. helpers.phpを作成
 2. composer.jsonへの追加
 3. composer dump-autoload コマンドの実行

# 手順1
appフォルダ以下にhelper.phpを作って、作りたいヘルパーを定義

“`php:app/helper.php

“`

# 手順2
composer.jsonのautoloadの項目にヘルパーを定義したファイルのパスを追加

“`json:composer.json
“autoload”: {
…(省略

元記事を表示

MySQLではなく、MySQLi

MySQLiとは「MySQL improved extension」の略で、PHPからMySQL/MariaDBデータベースを操作するためのインターフェースを提供する、PHPの拡張機能です。
MySQLとの違いは、オブジェクト指向の記述に対応したことです。
なのでMySQLiを使うにはまずオブジェクト(インスタンス)を生成し、メソッドを使ってSQLの実行をする形になります。

元記事を表示

Laravel Log singleログとdailyログを同時に出力する

# 目的

– Laravelのログ出力にて二種のログを同時出力する方法をまとめる

# 実施環境

– Macのローカルに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.3 | Homwbrewを用いて導入 |
| Laravel バージョン | 7.0.8 | commposerを用いてこちらの方法で導入→[Mac

元記事を表示

[PHP] Zoom APIを利用してミーティングを作成する

#今回の題
友人がZoomのAPIを使って何か作りたいというので勉強してまとめてみました。
この記事ではJWTという認証方法でミーティングを作成するところまで行います。
主に私自身のアウトプットが目的ですが、いつか誰かの参考になれば幸いです。
まだ利用途中なので適宜、加筆していきます。

#APIキーの取得

以下にアクセスし、サインアップしてください。
[Zoomマーケットプレイス](https://marketplace.zoom.us/)

サインアップしたら、画面右上の「Develop」と書かれたドロップダウンから「Build App」を選択して以下のようなページにいきます。

![スクリーンショット 2020-07-01 23.41.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/546124/561cd706-1db8-7ee0-ded4-4a6f32f71653.png)

画像の赤枠で囲んだ部分をクリックすると、これから作成するアプリの名前を求められるので以下のように適当に埋めておき

元記事を表示

まだまだ丸め誤差と闘わないといけない件について

Difficulty 24の問題でコケてしまった悲しみ。

[AtCoder Beginner Contest 165のB問題](https://atcoder.jp/contests/abc165/tasks/abc165_b)、問題名「1%」は、高橋くんが100円持っていて、銀行に預けると年利1%(複利)の利子がつくのですが、ある金額X円に達するには何年かかるか答えよ、という問題です。

自分で作った回答コードはこちら。

“`PHP
$money) {
$money += intval($money * ($risoku / 100));
$ans++;
}
printf(“%d”, $ans);
“`

結果、不正解となったコードですが、どこが間違っているか分かりますでしょうか?

利子を変数にして1%じゃなくても答えが出せるんだぜ的にしてしまったのが悪かった

元記事を表示

【Laravel】配列のバリデーション

フォームのフィールドが配列の場合のバリデーションについてのメモです。
###ドット記法
配列に対してバリデーションを行うためにはドット記法を使い、`.`で配列の階層を表します。また`*`で配列内すべてを表します。

“`php
//photos[profile]フィールドを指定
$validator = Validator::make($request->all(), [
‘photos.profile’ => ‘required|image’,
]);

//keywordフィールドすべてを指定
$validator = Validator::make($request->all(), [
‘keyword.*’ => ‘required|max:20’,
]);
“`
####エラーメッセージの取得

“`
Illuminate\Support\ViewErrorBag {
#bags: array:1 [
“default” => Illuminate\Support\MessageBag {
#messages: array:2 [

元記事を表示

PHPでMySQLのデータ操作その2

# PHPでMySQLのデータ操作その2

PHPでMySQLを操作する方法を備忘録も兼ねてまとめました。
今回は検索編。
[前回](https://qiita.com/bs_user/items/ae9a9c2e350d0eeb7d78)から引き続きまずこのようなデータがあるとします。

|id|name|age|position|
|:—————–|——————:|:——————:|:——————:|
| 選手id|選手名|選手の年齢|選手のポジション|

“`.sql
— futsal_teamというデータベース(がなければ)作成。IF NOT EXISTSで判断。
CREATE DATABASE IF NOT EXISTS futsal_team DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
— GRANT文で権限をユーザーに付与、ユーザーはfutsal_team内の全てのテーブルを操作できる。
GRANT ALL PRI

元記事を表示

PHPでMySQLのデータ操作その1

# PHPでMySQLのデータ操作その1

PHPでMySQLを操作する方法を備忘録も兼ねてまとめました。
まずこのようなデータを作成、用意します。
架空のフットサルチームがあるとします。

|id|name|age|position|
|:—————–|——————:|:——————:|:——————:|
| 選手id|選手名|選手の年齢|選手のポジション|

“`.sql
— futsal_teamというデータベース(がなければ)作成。IF NOT EXISTSで判断。
CREATE DATABASE IF NOT EXISTS futsal_team DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
— GRANT文で権限をユーザーに付与、ユーザーはfutsal_team内の全てのテーブルを操作できる。
GRANT ALL PRIVILEGES ON *.* TO ‘bs_user’@’localhost’ IDENTIFIED

元記事を表示

フォルダ設計、XAMPを使ったドメイン(バーチャルホスト設定)

口コミサイトをPHPで作っていたら、「フォルダ設計」が必要らしいが、どこに作ればいいのかさっぱりわからなかった。ググったら、hogehoge.com、XAMPでオリジナルドメインを取得、DB接続というキーワードが出てきた。。。。わかったら随時更新予定。

参考記事
https://qiita.com/eryuus1/items/9300e6d56729799bae5d

MAMPのバーチャルホスト設定:開発用のドメイン登録とhosts設定

元記事を表示

OTHERカテゴリの最新記事