それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

php

php の pecl のインストール

古いphpのアプリを動かす。 https://packages.sury.org/php/ を使って php7.0 をインストール サンプルとして、pecl から rarパッケージを持ってくる php8.1/php8.0/php7.4 でも同様です。 php7.0 で pecl パッケージ をインストールする。 sudo apt install…

cronをWEB管理するソフトを作りました。

cron の代替を作りました。 github.com 経緯 cron(自動実行プログラム)の管理が煩雑でした。 増え続けるcrontab。ここ数年管理が崩壊していました。systemd.timer や google app scripts なども増えるし、ラムダ系で実行してたりいろいろな所で、タイマー(…

WEBフォーム項目の連動項目でのバリデーションの一般的な解決法(laravelでの実装例)

Selectやラジオボタンのチェック項目よって、バリデーションが異なる場合。 根本問題としてそういうフォームを作るなと思うのですが。 直前の選択項目によって次の入力項目のバリデーションが異なることがある。 例 電話番号 固定電話と携帯電話で番号をバリ…

laravelの設定(config) のキャッシュと実行環境(テスト環境testing/local ) の関係

laravel の env / config の関係について。 env と configキャッシュで testing のデータベースが使われずにパニクった。 TL;DR .env.testing を使ってる場合、テスト実行する前には、cache:clearする。 laravel の実行環境と設定について 実行環境と設定は…

phpに於ける StringIO

php

phpに於ける StringIO php にはStringIOが無いと存じます。無いのではなく、必要がないのです。 stringio を実現する $string_io = new \SplFileObject('php://memory','w+'); これだけです。SplFileObjectが最強です。 もしくは、fopen $fp = fopen('php://…

Laravel の通知でカスタムチャネルとカスタム通知を作ってみる

Laravel の通知でカスタムチャネルとカスタム通知を作ってみる 作ったもの 最初に知っておくこと laravel の通知の概要 通知するもの、通知されるもの、通知チャンネル(ドライバ) ユーザーに通知する箇所の概念的構造。 通知を送る例 通知するクラスは自分で…

debianのphpでapcuを有効にする。

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 コマンドを ssh 経由で呼び出せることに気づいた。

sendmail でメールを送ろうとして苦労してた。 webの問い合わせフォームだとか、php のsendmail をサーバでは使えるが、ローカルでは smart-relay な postfix を設定して試していた。 実にめんどくさいことだった。或る日、コマンドを眺めていて、ふと気づい…

全角の英数を半角の英数に統一する(ただし、記号は除外)

php

全角を半角にする。 php で日本語の英数字(A-Z)を半角にしたいときは、文字コードのコードポイントを用いた計算ができる。 英数字だけを半角にしたいとき。

php, mysqlで wordpress のテーブルへ pdo したときに文字化けする。

機種依存文字が化けます。 めっちゃ化けます。とくに、外字的な、ハシゴダカのような文字列を扱えません。PDOまじアレ。 PDOのマニュアルとか検索結果を見ても、ほとんど情報がないんですよね。困りました。 Windowsだと外字に登録するような文字列であって…

php xdebug の接続(localhost/phpstorm/php-builtin webserver)

IDE とphp-xdebug でブレークポイントを使いたい。 IDE で php-debug を使ってブレークポイントを設定し任意の場所で変数の内容をダンプしたい。 はじめに php の xdebug を使えば phpstorm や vscode などでブレークポイントを使うことができる。 接続形態 …

phpで'rm -rf'で再帰的に空じゃないフォルダを消す。

php

php で rm -rf をする方法を探してた PHPの組み込み機能をすごく上手につかった方法を発見したのでメモ。 isDir…

php で url から ホスト名を取り出す。 - parse_url

php

PHPでURLからホスト名だけを取り出す。 var_dump(parse_url( 'https://www.yahoo.co.jp:443/', PHP_URL_HOST )); string(15) "www.yahoo.co.jp" 見て分かる通り、指定したものをちゃんと簡単に取り出せます。 ほんとなんで十分に検証もしないままコピペの正…

php で DNS からレコードを調べてIPアドレスを取り出す - dns_get_record

php

ドメイン名のDNSレコードを調べてIPアドレスを取得する dns_get_record でDNSの値をクエリすることが出来ます。 var_dump(…

phpで文字列がメールアドレスかどうか調べる(RFC822) - filter_vars

php

phpで文字列がメールアドレスかどうか調べる。 var_dump(filter_var('takuya@example.com', FILTER_VALIDATE_EMAIL )); string(18) "takuya@example.com" php > var_dump(filter_var('takuya+sample@…

phpで 文字列がIPアドレスかどうか調べる- filter_vars

php

文字列がIPアドレスかどうか調べるには。 FILTER_VALIDATE_IP を filter_vars と組み合わせて使うとお手軽です。 var_dump(filter_var('a', FILTER_VALIDATE_IP)); bool(false) php > var_dump(filter_var…

phpでプロスセス実行するライブラリ書いた。

php でコマンドのプロセス実行したい。 シェルコマンドの呼び出しをどうしてもやる必要があって、ずっと proc_open について調べてたり、pakagist / pear などのライブラリを見てたんだけど、代表的なものをいくつか試した。しかしコレと思えるものや使い方…

php の proc_open の処理を callback で少し見通しよく

proc_open のコードがカオスになってる proc_open でプロセスを起動して実行できる。 でも、あれこれ手順が煩雑でわかりにくい。 コールバックを使って整理する こういうときは、関数の引数に関数を取れば整理されるはず。

php のコマンド実行のproc_open でexitcode を取得する

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関数でコマンドのstdin/stdout/パイプを使う例を確認しました。

php でプロセス(プログラム実行) proc_openでプログラム実行 exec同等 コマンドからの出力 標準出力・エラーを捨てる 省略可能 標準出力を指定のファイルに 出力結果を一時ファイルに出す。 php://temp を使う場合の注意点 標準エラー出力を別のファイルに …

phpで改行が反映されない件(終了タグと改行コードの関係)

php

php で改行コードが反映されないことがあります。 LFでもCRLFでも関係なく、文字コードも関係ありません。php では終了タグで「改行」すると、出力には改行が反映されません。 著者: 書題: 実行結果 $ php sample.php 著者:コーチングのプロが教える 「ほめ…

laravel のmodel を 外部から使う

php

laravel の Eloquent のモデルを別のプロジェクトからぱぱっと使う。 Consoleとかあるし、API作れば実現はできる。でも既存のものと組み合わせるときは、DBを直接書き換えたほうが早い時がある。 本当はプロジェクトの外部から直接触るのは良くないと思うし…

laravel のマイグレーションで特定のmigration のファイル名指定して、一つだけ再度・何度も実行したい

laravel でmigrate するとき、特定のファイルだけを実行したい migrate refresh とかだと全部のテーブルが再生成されちゃうので、別のテーブルデータを消さずに特定のテーブルだけを再構築したい。 サンプル 指定したマイグレーションのファイルだけを実行す…

phpでOSの判定をする組み込み変数

php

php で実行環境をチェックするには PHP_OS という、ウルトラ素晴らしい定数が、最初から組み込まれています。

if 文には必ずブロックをつけろと言われることが多いけど、使い方によってはむしろ邪魔

if にブロックがないと叱られたことが昔から多い。 if のブロックって上手に書けばいいと思うし、設定やLintで矯正されたりするんだけどさ。 この if の書き方を見ほしい function setupAce(e, set){ //デフォルト設定(カスタマイズしたい場合はの引数(set)…

laravel の api ルートを叩いてもloginページやHTMLが帰ってきてjson以外になってしまう場合

TL;DR HTTPリクエストのヘッダに、 Accept: text/json が抜けている可能性が高い。 Laravelのレスポンスが login になる場合。 api で auth を入れているところへリクエスト投げつける。 HTMLのログインが帰ってくる。 実例 curl -H 'Content-Type: applicat…

composer でgithub / gitlab などのgit レポジトリをコマンドから指定してインストール

php/composer でコマンドから git レポジトリをインストールしたい。 composer で git のレポジトリ(非公式 package / 自作pkg )を指定して追加して使いたい。 通常は composer.json を編集するのだろうけど、 jsonの手作業の編集は、苦痛。 なので、コマ…

PHP Fatal error: Uncaught ErrorException: preg_replace(): JIT compilation failed: になる。

php

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-cliでプロジェクト単位(ディレクトリ単位)の設定を.user.iniで読み込ませる。

php

php でプロジェクト単位の設定を使いたい php には、ディレクトリ単位で php の設定を変更する user.ini という特殊なファイルを使うことができる。 イメージとしては .htaccess のようなものでディレクトリに設置することでディレクトリ単位でphpの挙動を変…

uwsgi で php を動かす - phpの複数バージョン起動のためにuwsgi-plugin-php をインストールして使う

php

uwsgi にphp プラグインがあります。 uwsgi とはPythonのイメージですが、php-fpm の代わりに使えます。(多分使うことは殆ど無いだろうけど) uwsgi で管理するメリット docker のイメージを作るときに php-fpmが混ざると共通化されないけど、uwsgi だとあ…