PHPエラーが出た場合上記の「サイトに重大なエラーがありました」がでるようになった。しかしトラブルシューティング上は上記のメッセージでは何をしていいのかわからない。
wp-configのWP_DEBUGの値はfalseになっているのだが、これを一時的にtrueにして再度アクセスするとjsonモジュールのところがundefinedになっていた。
以下のコマンドでjsonを入れて対応完了。
yum install php-json.x86_64
PHPエラーが出た場合上記の「サイトに重大なエラーがありました」がでるようになった。しかしトラブルシューティング上は上記のメッセージでは何をしていいのかわからない。
wp-configのWP_DEBUGの値はfalseになっているのだが、これを一時的にtrueにして再度アクセスするとjsonモジュールのところがundefinedになっていた。
以下のコマンドでjsonを入れて対応完了。
yum install php-json.x86_64
VPSの予備機にPHP7.4をインストールして一通り動作確認した。
前回PHP7.3の時はライブラリが古くて、そのUPDATEでコード書き換え必須だったのだが、今回はそのままいけそう。
てなわけで次回のサーバー移行時にPHP7.4にしよう。
追伸:CakePHPがダメだった!がこれはCakePHPを最新バージョンにすれば大丈夫のはず!
Spring Securityのバージョンアップにより、不正なURLでアクセスすると上記エラーが出るようになったという。
SpringBoot 単体で動かしているときはでなかったのだが、Apacheと連携した時だけ出ていたのでおそらく・・・/が連続する形になって、パストラバーサル攻撃とみなされてしまったようだ。末尾の/をとってエラー解消!
ProxyPass http://SPRING_BOOT_SERVER/myhome/
MySQLで文字数を数えたい時にLENGTHを使うとバイト数になるので、文字数をカウントするには表題の通りCHAR_LENGTHを使うべし!
クレジットカードの明細の最大文字数を図るべく上記の関数を利用しただが、なんか20文字のような気がするが、半角英数字のみだと30文字まで行けそう。
もちろんカード会社によって違ってくるのだろうけど、基本的には漢字が少なかったり(ほとんどカタカナ)するのでレガシーなシステムが間に入って文字数制限が今時あるのだろうと推測する。
なぜか起動したSpringBootアプリケーションのログファイルがLOG_FILE_IS_UNDEFINEDとなってしまっていた。
logback-spring.xmlには以下のように設定してあるので/var/tmpに出るはず。
<!--ローカル環境用設定 -->
<springProfile name="default">
<property name="LOG_FILE" value="/var/tmp/spring_default.log" />
</springProfile>
<!--develop環境用設定 -->
<springProfile name="local">
<property name="LOG_FILE" value="/var/tmp/spring_local.log" />
</springProfile>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder>
<pattern>${FILE_LOG_PATTERN}</pattern>
</encoder>
<file>${LOG_FILE}</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_FILE}.%d{yyyyMMdd}</fileNamePattern>
<maxHistory>5</maxHistory>
</rollingPolicy>
</appender>
んでよくよく見るとprofileがlocalとdefaultしかなくて、該当ファイルが出ていたのはprodで動かしていたので${LOG_FILE}が未定義の変数扱いになっていたという!
Windows10が1日でCPU100%になってしまう問題。もはや毎日の定例行事で強制停止が恒例に。SSHシェルでプロセスIDを特定してkillする。
ps -jv | egrep “WID|Windows10”
WID CID WorldName GID
8062922 0 vmm0:Windows10 8062921
8062926 8062921 vmx-mks:Windows10 8062921
8062927 8062921 vmx-svga:Windows10 8062921
8062928 8062921 vmx-vcpu-0:Windows10 8062921
正規表現の記述の仕方がPHP7.3で変わったようで、simple_html_domを使った処理で落ちていたという。バッチ処理のためすぐには気が付かず15分後に気が付いて慌ててPHP7.2にダウングレードしようとしたら、PHP5が入ってしまいWordpressが動かずにさらに慌てるという!
原因は simple_html_dom 内部の正規表現なのでPHP7.3対応バージョンの1.9に差し替えればうまくいくはず。
これから検証環境で試す!
追記:simple_html_domの1.9で試したらnamespaceが導入されていて、メソッドの頭にnamespaceを付けないとだめだったが、それらの対応をしてPHP7.3対応完了!
chromeをrootで動かすと出てしまうエラー。
通常コマンドであればエラーメッセージの通り–no-sandboxオプションをつけて起動すれば良い。
Seleniumの場合オプション指定のやり方があるので下記の通りに記載する。
ChromeOptions chromeOptions = new ChromeOptions();
// rootで実行するとき向け
chromeOptions.addArguments("--no-sandbox");
DesiredCapabilities capabilities = DesiredCapabilities.chrome();
capabilities.setCapability(ChromeOptions.CAPABILITY, chromeOptions);
capabilities.setCapability("pageLoadStrategy", "none"); // normal eager none
driver = new ChromeDriver(capabilities);
Seleniumで利用する各種ブラウザ対応のWebDriverだが、任意の場所へインストール(というか配置)してプログラム中で場所を指定していたのだが、流石にWindows/Mac/Linuxと3つの環境で動かすこともあるため、その度に書き換えるのはめんどくさい。
回避策としてはPATHが通っているところへ配置することで、Selenium側がそちらを探してくれるのでいちいちプログラム側で設定不要!
mac/linuxなら/usr/local/binあたりに置いておくのが良い。Windowsはどこが良いかな。。。
brew install chromedriverでインストールされるのも/usr/local/binである!
それまで動いていたPlaybookだが表題の通りのメッセージが出た。
host_vars/ホスト名.ymlに日本語のコメントを追加していたのでそのせいだった。
ホスト名が一致しないとhost_varsを読み込まないため、日本語コメント記載と実行まで間隔が開いて、発覚して慌てた。
こういうトラブルを避けるためにもコメントであろうともマルチバイト文字の利用は極力避けようと誓うのであった。