コードロード

エラー討伐

2022-01-01から1年間の記事一覧

【PHP】セッション名にドットを含めて指定するとセッションが取得できなくなる

php

課題 セッション名を指定して session_start() すると、セッションが取得できなかったのでメモ。 結論 セッション名を指定するときに、「.」ドットは使わない! 例 セッション名を「.」ドットで繋いで session_start() すると、セッションを取得できない。 …

【PHP】CSV出力したいのにheader()関数が効かない

php

環境 MAMP PHP 7.4.16 やりたかったこと PHPでCSVを出力する機能を作っていて、レスポンスヘッダーを下記のように設定したかった。 Content-Disposition: attachment; filename=ファイル名.csv Content-Type: text/csv 課題 下記のメソッドを使ってレスポン…

【Laravel】バリデーション失敗時に勝手にリダイレクトしないようにする(jsonを返させる)

課題 バリデーション失敗時に勝手に意図しないhtmlレスポンスを返す。 解決の過程 ReactとLaravelで開発中に、データ更新時と登録時にたまに302レスポンスが返ってくる。 コントローラまで処理が到達していない フォームリクエストで止まっているっぽい バリ…

【Laravel】特定のcookieの値の暗号化を解除(Laravel外からもcookieを使用したい)

課題 CookieファサードとPHPのfilter_inputで取得できるcookieの値が異なる。 Laravel外からcookieを使用したいが、暗号化されているため使用できない。

【Laravel×Apache】413 (payload too large) が出たらphp.iniを変更する

環境 PHP 8.0.16 CentOS Apache 2.4 課題 本番環境にて画像をアップロードしようとしたら、 413 Content Too Large のエラーが返ってくる。 解決方法 php.ini で、 upload_max_filesize と post_max_size を確認する。 まず、そもそもどこの php.ini を読み…

【Laravel】本番環境で画像アップロードできないときに確認する箇所

課題 本番環境にて、下記のコードでアップロードできなかった。 ブラウザのネットワークタブで確認すると、500エラーとだけ表示される。

【Laravel】認証していない場合のリダイレクト先を変更する

app/Http/Middleware/Authenticate.php のリダイレクト先を名前付きルートに変更する。 Sanctumで認証しているが、これでいけた expectsJson()) { return route('login'); // <-ここを名前付きルートに変更 } } 公式にも書いてある Note: 独自の/login エン…

githubの秘密鍵を指定してgit pullする

git

こんな感じで .ssh/config に2つ登録したとする // .ssh/config Host github.com.first HostName github.com IdentityFile ~/.ssh/id_rsa_first User git Host github.com.second HostName github.com IdentityFile ~/.ssh/id_rsa_second User git 秘密鍵を…

【Laravel×Postman】画像を取得できない(送信できない)時は

LaravelでREST API作成中にハマった。Postmanで動作確認中。 結論 リクエストヘッダーの Content-Type のチェックが外れていないか確認! 値は multipart/form-data; boundary=<calculated when request is sent> となっているはず。 ハマった こんな感じで、POSTリクエストで、Bodyを form-da</calculated>…

【Laravel】定数をクラスファイルで管理する

定数をクラスファイルで管理する app/Consts/CommonConst.php を作成した。 [ // 省略 'CommonConst' => \App\Consts\CommonConst::class, ] ] app/Http/Controllers/Api/…

【Laravel Sanctum】ログインは通ってセッション生成されたのにSanctumミドルウェアのルートにアクセスするとunauthenticatedになる

メモ程度 課題 表題の通り 対策 キー名RefererとOrigin、値はURLでリクエストヘッダーに設定してあげる。 参考 refererヘッダーまたはoriginヘッダーのチェック SPAからこのヘッダーが送られないと認証エラーになる Postmanで動作確認するときに注意する qii…

【Laravel】419 CSRF token mismachエラーの対処記録

Laravel Sanctumを使ってログイン機能を実装中にエラーに遭遇。 思考の整理と次に時間を溶かさないようにするためのメモ 結論 .env での SESSION_DOMAIN='localhost' ここが間違えていた。 .env にてセッションを設定するドメインを設定しているので、ドメイ…

【Laravel】多対多でリレーション先のデータを取得する

多対多のER図 リレーション先を取得する モデルで追加したメソッド名を with('メソッド名') の引数に追加する ※リレーション先のテーブル名やクラス名をwith()の引数にするわけではない! // App/Models/Food.php /** * foodを持っているフードアイコン */ p…

【PHP】多次元配列を並び替えて、指定番目から指定件数のみ切り取った配列を取得

php

やりたいこと PHPで、多次元配列があって、指定したキーの値で、昇順・降順の並び替えができるようにしたかった。 並び替えの後、指定した番目から指定した件数分の要素だけを取得したかった。 つまり、ページネーションのイメージ。 SQLでやればこんな感じ…

【Windows-WSL2】composer install と composer updateでエラー

php

普段使っているPCとは別のPCで git clone したあとに、PHPUnitを composer install しようとしたときのエラー 環境 Windows11 WSL2 php 7.4.3 エラー文 it is missing from your system. Install or enable PHP's dom extension. it is missing from your sy…

【PHP】SERVER_NAMEじゃなくてphp_unameで開発環境と本番環境を振り分ける

php

困ったこと filter_input(INPUT_SERVER, 'SERVER_NAME') これでサーバーの名前をとって、 localhost かどうかで振り分けていたが、PHPUnitを使った時に、 null で返ってきたので代替法。 解決策 php_uname('n') これでPC名がでる。 PHP が稼動しているオペレ…

【PHP】MAMPでcURLを使えるようにするために

php

結論 cacert.pem(CA証明書をダウンロードする) php.iniを書き換える そもそもcURLが使える状況かどうか php -m で確認 phpinfo() で確認 PHPでcurlを使えない場合の対処法 - Qiita grepで確認 % php -i | grep cURL cURL support => enabled cURL Informat…

【IoT】IoTシステムのバックエンド(クラウド設計・運用のポイント)

IoT

IoTエンジニア養成教本の学習記録です。 改訂新版 IoTエンジニア養成読本 Software Design plus作者:片山 暁雄,松下 享平,大槻 健,大瀧 隆太,鈴木 貴典,竹之下 航洋,松井 基勝技術評論社Amazon 機能とサービスの選択 センサネットワークのバックエンドでデー…

【IoT】IoTに最適な通信規格とは(LPWA)

IoT

IoTエンジニア養成読本の学習記録です。 改訂新版 IoTエンジニア養成読本 Software Design plus作者:片山 暁雄,松下 享平,大槻 健,大瀧 隆太,鈴木 貴典,竹之下 航洋,松井 基勝技術評論社Amazon LPWAとは Low Power Wide Area の略で、消費電力を抑えて遠距離…

【IoT】IoTシステムの全体像

IoT

IoTエンジニア養成読本の学習記録です。 改訂新版 IoTエンジニア養成読本 Software Design plus作者:片山 暁雄,松下 享平,大槻 健,大瀧 隆太,鈴木 貴典,竹之下 航洋,松井 基勝技術評論社Amazon デバイスをゲートウェイ経由で接続する データの流れは、「セン…

【SQL】ウィンドウ関数で行間比較を行う(相関サブクエリとはバイバイして可読性&パフォーマンスUP)

SQL

達人に学ぶSQL徹底指南所の学習記録です。 達人に学ぶSQL徹底指南書 第2版 初級者で終わりたくないあなたへ (CodeZine BOOKS)作者:ミック翔泳社Amazon SQLで同一行内の列同士の値を比較するのはWHERE句で記述すればいいだけだが、異なる行を比較するのは工夫…

【SQL】ウィンドウ関数で行間比較を行う(相関サブクエリとはバイバイして可読性&パフォーマンスUP)

SQL

達人に学ぶSQL徹底指南所の学習記録です。 達人に学ぶSQL徹底指南書 第2版 初級者で終わりたくないあなたへ (CodeZine BOOKS)作者:ミック翔泳社Amazon SQLで同一行内の列同士の値を比較するのはWHERE句で記述すればいいだけだが、異なる行を比較するのは工夫…

【SQL】HAVING句はおまけじゃない!CASE式と自己結合と組み合わせて使う

SQL

達人に学ぶSQL徹底指南所の学習記録です。 達人に学ぶSQL徹底指南書 第2版 初級者で終わりたくないあなたへ作者:ミック翔泳社Amazon 要点 何を持って集合と見なすかに注目する。 集合の性質を調べるための条件の使い方 COUNT(DISTINCT col) = COUNT(col) :c…

【SQL】3値論理とNULL(NULLにいじめられないために)

SQL

達人に学ぶSQL徹底指南所の学習記録です。 達人に学ぶSQL徹底指南書 第2版 初級者で終わりたくないあなたへ作者:ミック翔泳社Amazon データベースにnullが一つでも含まれれば、クエリから正しくない結果が返される可能性がある。 とりあえずこれは覚える! 3…

【SQL】ウィンドウ関数でSQL上で行間比較をやってしまう

SQL

達人に学ぶSQL徹底指南所の学習記録です。 できること 行間比較において相関サブクエリに頼っていた部分を、ウィンドウ関数で書けるようになる。 手続き型言語において、「順序づけされたレコード集合をfor文やwhile文のループで回してカレントコードを1行ず…

【SQL】CASE式で条件分岐を表現

SQL

達人に学ぶSQL徹底指南所の学習記録です。 やってること ラベルの読み替えを行なっているだけ。 要点 CASEは「式」だから、列名や定数をかける場所には常にかける 集約関数の中で使うことで、行持ちから列持ちへの水平展開が可能 逆に、集約関数を条件式に組…

【PHP・mysqli】INSERTしたレコードの主キーを取得

php

やりたかったこと mysqliで直前にINSERT処理で追加したレコードの主キー(id)を取得したかったのでメモ。 実装方法 mysqli::$insert_id を使う。 直前のクエリで更新された AUTO_INCREMENT フィールドの値を返します。接続での直前のクエリがない場合や ク…

【PHP】Content-Typeがapplication/jsonのPOSTから値を取得する

php

課題 PHPで $name = (string)filter_input(INPUT_POST, 'name') でPOSTの値を取得できない。 原因 $_POST() または (キャスト)filter_input(INPUT_POST, 'key') では、そもそも application/json を取得できない。 公式リファレンスでは下記のように書いてあ…

【SQL】WHERE句は演算子で条件をつけなくても良い

SQL

前提 テーブル内の全レコード数を取得したかった。 id が PRIMARY キー 途中で DELETE されてるレコードもあるので id が不連続となっている。 そのため、 ORDER BY id DESC LIMIT 1 で id の値がそのままレコード数というわけにもいかなかった。 概要 今ま…

【SQL】サブクエリに「AS」でエイリアスをつけないとEvery derived table must have its own alias

やろうとしたSQL ページネーションを作ろうと思って書いたSQL SELECT * FROM (SELECT * FROM samples WHERE id < 30 ORDER BY id DESC LIMIT 1) UNION ALL SELECT * FROM (SELECT * FROM samples WHERE id >= 30 ORDER BY id ASC LIMIT 6) エラー Every deri…