php
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提…
sendmail でメールを送ろうとして苦労してた。 webの問い合わせフォームだとか、php のsendmail をサーバでは使えるが、ローカルでは smart-relay な postfix を設定して試していた。 実にめんどくさいことだった。或る日、コマンドを眺めていて、ふと気づい…
全角を半角にする。 php で日本語の英数字(A-Z)を半角にしたいときは、文字コードのコードポイントを用いた計算ができる。 英数字だけを半角にしたいとき。
機種依存文字が化けます。 めっちゃ化けます。とくに、外字的な、ハシゴダカのような文字列を扱えません。PDOまじアレ。 PDOのマニュアルとか検索結果を見ても、ほとんど情報がないんですよね。困りました。 Windowsだと外字に登録するような文字列であって…
IDE とphp-xdebug でブレークポイントを使いたい。 IDE で php-debug を使ってブレークポイントを設定し任意の場所で変数の内容をダンプしたい。 はじめに php の xdebug を使えば phpstorm や vscode などでブレークポイントを使うことができる。 接続形態 …
php で rm -rf をする方法を探してた PHPの組み込み機能をすごく上手につかった方法を発見したのでメモ。 isDir…
PHPでURLからホスト名だけを取り出す。 var_dump(parse_url( 'https://www.yahoo.co.jp:443/', PHP_URL_HOST )); string(15) "www.yahoo.co.jp" 見て分かる通り、指定したものをちゃんと簡単に取り出せます。 ほんとなんで十分に検証もしないままコピペの正…
ドメイン名のDNSレコードを調べてIPアドレスを取得する dns_get_record でDNSの値をクエリすることが出来ます。 var_dump(…
phpで文字列がメールアドレスかどうか調べる。 var_dump(filter_var('takuya@example.com', FILTER_VALIDATE_EMAIL )); string(18) "takuya@example.com" php > var_dump(filter_var('takuya+sample@…
文字列がIPアドレスかどうか調べるには。 FILTER_VALIDATE_IP を filter_vars と組み合わせて使うとお手軽です。 var_dump(filter_var('a', FILTER_VALIDATE_IP)); bool(false) php > var_dump(filter_var…
php でコマンドのプロセス実行したい。 シェルコマンドの呼び出しをどうしてもやる必要があって、ずっと proc_open について調べてたり、pakagist / pear などのライブラリを見てたんだけど、代表的なものをいくつか試した。しかしコレと思えるものや使い方…
proc_open のコードがカオスになってる proc_open でプロセスを起動して実行できる。 でも、あれこれ手順が煩雑でわかりにくい。 コールバックを使って整理する こういうときは、関数の引数に関数を取れば整理されるはず。
proc_open でexitcode を取得すると -1 になる proc_open の関数で、exitcode を参照すると、常に -1 が固定で返ってくる件 proc_get_status($process)['exitcode']; // -1 proc_get_status($process)['exitcode']; // -1 array:8 [ "command" => "ssh" "pid…
php でプロセス(プログラム実行) proc_openでプログラム実行 exec同等 コマンドからの出力 標準出力・エラーを捨てる 省略可能 標準出力を指定のファイルに 出力結果を一時ファイルに出す。 php://temp を使う場合の注意点 標準エラー出力を別のファイルに …