- 1. laravel6のIgnition問題
- 2. 読解メモ: PHP RFC: Make constructors and destructors return void
- 3. なぜサーバーサイド言語と合わせて、JabvaScriptを理解しておく必要があるのか。
- 4. 型を指定したからといって安心してはいけない(戒め
- 5. PHP composerでext-httpエラーの解決方法
- 6. GuzzleでのAPI通信先でのデータ取得方法を知りたい
- 7. Laravel Log dailyログとerrorログを別々に出力する
- 8. 【PHP】添字配列をarray_mergeすると、配列の連番が0からになる
- 9. PHP7.4開発環境をUbuntuに作成
- 10. ラズパイで温湿度とCPU温度の取得とグラフの表示
- 11. nginx1.18 + php7.4.5 エラー対処メモ
- 12. 【Laravel】自作ヘルパー
- 13. MySQLではなく、MySQLi
- 14. Laravel Log singleログとdailyログを同時に出力する
- 15. [PHP] Zoom APIを利用してミーティングを作成する
- 16. まだまだ丸め誤差と闘わないといけない件について
- 17. 【Laravel】配列のバリデーション
- 18. PHPでMySQLのデータ操作その2
- 19. PHPでMySQLのデータ操作その1
- 20. フォルダ設計、XAMPを使ったドメイン(バーチャルホスト設定)
laravel6のIgnition問題
# 概要
システム保守の関係上、[JBNDB](https://jvndb.jvn.jp/)のRSSを常にチェックしているが、先日見た事ないような深刻度の脆弱性が出てきた。
・[Laravel 用の Ignition page における脆弱性](https://jvndb.jvn.jp/ja/contents/2020/JVNDB-2020-006168.html)
きゅ、、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
詳しくは下記記事
# ネット上をサーフィンしまくって解決
“`bashProblem 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