php
古い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 を使う場合の注意点 標準エラー出力を別のファイルに …
php で改行コードが反映されないことがあります。 LFでもCRLFでも関係なく、文字コードも関係ありません。php では終了タグで「改行」すると、出力には改行が反映されません。 著者: 書題: 実行結果 $ php sample.php 著者:コーチングのプロが教える 「ほめ…
laravel の Eloquent のモデルを別のプロジェクトからぱぱっと使う。 Consoleとかあるし、API作れば実現はできる。でも既存のものと組み合わせるときは、DBを直接書き換えたほうが早い時がある。 本当はプロジェクトの外部から直接触るのは良くないと思うし…
laravel でmigrate するとき、特定のファイルだけを実行したい migrate refresh とかだと全部のテーブルが再生成されちゃうので、別のテーブルデータを消さずに特定のテーブルだけを再構築したい。 サンプル 指定したマイグレーションのファイルだけを実行す…
php で実行環境をチェックするには PHP_OS という、ウルトラ素晴らしい定数が、最初から組み込まれています。
if にブロックがないと叱られたことが昔から多い。 if のブロックって上手に書けばいいと思うし、設定やLintで矯正されたりするんだけどさ。 この if の書き方を見ほしい function setupAce(e, set){ //デフォルト設定(カスタマイズしたい場合はの引数(set)…
TL;DR HTTPリクエストのヘッダに、 Accept: text/json が抜けている可能性が高い。 Laravelのレスポンスが login になる場合。 api で auth を入れているところへリクエスト投げつける。 HTMLのログインが帰ってくる。 実例 curl -H 'Content-Type: applicat…
php/composer でコマンドから git レポジトリをインストールしたい。 composer で git のレポジトリ(非公式 package / 自作pkg )を指定して追加して使いたい。 通常は composer.json を編集するのだろうけど、 jsonの手作業の編集は、苦痛。 なので、コマ…
macOS でphp7.3 を homebrew で入れた場合に発生します。 ほんと、もうphpは。。。brew にちゃんとしたコンパイル設定を送ってよね。 PHP Fatal error: Uncaught ErrorException: preg_replace(): JIT compilation failed: no more memory in phar:///usr/lo…
php でプロジェクト単位の設定を使いたい php には、ディレクトリ単位で php の設定を変更する user.ini という特殊なファイルを使うことができる。 イメージとしては .htaccess のようなものでディレクトリに設置することでディレクトリ単位でphpの挙動を変…
uwsgi にphp プラグインがあります。 uwsgi とはPythonのイメージですが、php-fpm の代わりに使えます。(多分使うことは殆ど無いだろうけど) uwsgi で管理するメリット docker のイメージを作るときに php-fpmが混ざると共通化されないけど、uwsgi だとあ…