php
稼働中のLaravelアプリをバージョンアップ php8で動かしたいと思ったけど、エラーになるので、対応する。 マニュアルupgrade 5.8 to 6を参考にアップグレードする composer.json ## require - "php": "^7.1", + "php": "^7|^8.0", - "laravel/framework": "5…
sample for generate certificate php で certificate 作成する例。 証明書作成の手順 発行人の秘密鍵の作成 発行人の証明書の作成(自己署名・署名リクエスト) 被発行人の秘密鍵の作成 被発行人の証明書の作成(自己署名・署名リクエスト) 発行人が署名リ…
Null合体演算子(Null Coalescing)と三項演算子の短縮形(Short-ternary )を使ってパニクったので整理。 この値を知りたい。 値 比較 結果 unset($a) $a[0] ?? null NULL $a = null $a[0] ?? null NULL $a = $a[0] ?? null NULL $a = ['x'] $a[0] ?? null '…
ふと、他人の書いたPHPコードgithub で眺めていると、次のような記述に遭遇した。 list() と foreach で配列を変数に展開する。
Guzzle さんは、内部的に http_build_query を使っている。 そのため、次のようなリクエストのパラメタを渡すと。 $gz->request('GET' , [ 'name'=>['a','b','c']] ) 次のようなリクエストを作り出す。 ?name[0]=a&name[1]=b&name[2]=c これは、あらゆるHTTP…
php の配列はすべてが連想配列なので、連番に欠番が出る。 欠番を「除去」したいときは、array_values で欠番を除いて再度の採番をすればいいのだけど、「欠番」を「特定の値で埋めたい」ときにはどうすればいいか。 欠番を数字で埋める。 'a', 3=>'c', 4=>'…
二律背反の要求を実現したい。 WebAPIの無駄な呼び出し回数を少しでも減らしたい。回数を減らし、プログラム応答速度を上げたい。 ただ、コードの書き換えは極小にしたい。 この目的では、Generatorを使うのが、鉄板だと思うんですよね。 WEBを呼び出すコー…
trait を use するときに名前がかぶった。 同じ名前の関数・変数があって、名前が衝突してエラーになる。 対応するには、use を使うか、優先順位を変える。 名前の衝突する trait の例 次の例では say() が衝突してしまう。
cloudflare のレコードをphpから処理 cloudflare のAPIを使う。 php が手軽かなと思って選んだ。 https://github.com/cloudflare/cloudflare-php https://packagist.org/packages/cloudflare/sdk インストール composer require cloudflare/sdk 初期化例。 A…
LaravelでGitlabログイン連携を作る laravel でSocialiteプラグインを使う。ユーザー登録の代わりにユーザをほかサイトのIDでログインさせるOAuthです。 今回は、「gitlab」ユーザでログイン機能を作る。とくにOmnibus版でセルフ・ホスティングサイトを使う…
Laravel でイベントとハンドラを使って通知を送る イベント・リスナ イベント定義を使って、「なにか」が起きたとき「これをやる」を定義出来る。 ジョブキューで分割すると思いがちだけど、別にシングルスレッドで実行しても構わない。 シングルスレッドで…
laravel で通知(slack/mattermost)を試す。 laravel で slack に通知(メッセージ送信)をする。 slack 互換のapi がある、mattermostでも「内向きウェブフック」を使えば同じように通知が出来る。 準備 webhook incoming のアドレス(URL) composer でパッケ…
Laravelで通知(メール)を試す。 laravel でコマンドを作ってメールを送信する。 必要なもの SMTP/S接続情報 作るもの Notification クラス 通知を送信するコンソール・コマンド laravel 通知の流れ laravel 通知では、Notificationを実装したクラスをapp/n…
php8.1 までで起こる SplFileInfo / SplFileObject / SplTempFileObject で php://memory php://stream を使うとエラーになる。 fwrite($ret); $sf->getSize(); // =>Error 対応 fstat は動くのでそっちを使う。 fwrite($ret); $sf->fstat()['size']; // => …
php で次のようなエラーが出る The server requested authentication method unknown to the client 原因 php-mysql の接続でエラー エラーの原因は mysql の認証方式の変更に対応できないエラー いままで、mysql は mysql_native_password だったが、mysql8…
php の pdo でエラーがでるので数日ずっと頭を抱えてた 出てくるエラー : Invalid parameter number: number of bound variables does not match number of tokens エラーは、php pdo の prepare statement で、execした時にエラーになる。 bindValue(":n1",…
Laravel でログを、ターミナルに出す。 laravel のログを画面ではなくターミナルへ出力する事ができる。 またターミナルとファイルに出す事ができる。 ログとデバッグ dd とかよく使います。 dd( $model ); dump もよく使います。 dump( $model ); これはロ…
laravel でリクエスト内容を書き換える。 リクエストの内容を書き換えるのなら、フィルタやサービスでDIを思い浮かべるかもしれないが、もっと手軽にできる方法がある。 それは、FormRequest を使うことだった。ブラウザからのリクエストを集合体にできるFor…
laravel の dd だけを自分のプロジェクトで使う dd関数だけ切り出したパッケージがあるので、それを使えば、好きなプロジェクトファイルで dd 関数が使える。 composer require --dev larapack/dd 依存パッケージがあるので、composer で インストールする。…
laravel ジョブ・キューモデル laravel には、ジョブ・ワーカーとキューがデフォルトで用意されています。 これを少し試してみました。 今回試すこと キューにジョブをいれて、ワーカーで処理をする。 queue でできること ジョブを待ち続けて実行する。 aris…
symfony processが詰まる理由 symfony processを使っていると、プロセスが60秒で終了してしまう。 Symfony Processのデフォルトタイムアウトかな。 Exit code 143 corresponds to SIGTERM, which is the signal sent by default when you run kill . Did you…
laravel のスケジュール実行 laravel で cron のようなジョブ実行ができる。cron書式で書いて旧世代のワタシに理解しやすくて便利そうなので、スケジュールをつかってcronを管理できたらいいなと思った laravel のスケジュールの流れ Kernel.phpに記述 artis…
phpでprotectedなメソッドにアクセスする。 この様なときに使う必要があった、laravelが持ってる protected な プロパティに強引にアクセスする。 laravelなどのフレームワークが内部に持ってるコールバックやプロパティを取り出して調べたり、意図通り、正…
古いphpのアプリを動かす。 https://packages.sury.org/php/ を使って php7.0 をインストール サンプルとして、pecl から rarパッケージを持ってくる php8.1/php8.0/php7.4 でも同様です。 php7.0 で pecl パッケージ をインストールする。 sudo apt install…
cron の代替を作りました。 github.com 経緯 cron(自動実行プログラム)の管理が煩雑でした。 増え続けるcrontab。ここ数年管理が崩壊していました。systemd.timer や google app scripts なども増えるし、ラムダ系で実行してたりいろいろな所で、タイマー(…
Selectやラジオボタンのチェック項目よって、バリデーションが異なる場合。 根本問題としてそういうフォームを作るなと思うのですが。 直前の選択項目によって次の入力項目のバリデーションが異なることがある。 例 電話番号 固定電話と携帯電話で番号をバリ…
laravel の env / config の関係について。 env と configキャッシュで testing のデータベースが使われずにパニクった。 TL;DR .env.testing を使ってる場合、テスト実行する前には、cache:clearする。 laravel の実行環境と設定について 実行環境と設定は…
phpに於ける StringIO php にはStringIOが無いと存じます。無いのではなく、必要がないのです。 stringio を実現する $string_io = new \SplFileObject('php://memory','w+'); これだけです。SplFileObjectが最強です。 もしくは、fopen $fp = fopen('php://…
Laravel の通知でカスタムチャネルとカスタム通知を作ってみる 作ったもの 最初に知っておくこと laravel の通知の概要 通知するもの、通知されるもの、通知チャンネル(ドライバ) ユーザーに通知する箇所の概念的構造。 通知を送る例 通知するクラスは自分で…
APCuが有効にならない。 sudo -u www-data php occ An unhandled exception has been thrown: OC\HintException: [0]: Memcache \OC\Memcache\APCu not available for local cache (Is the matching PHP module installed and enabled?) 清く正しくdebian提…