WordPress: PHPを5.6から7.3に更新したら、プラグインエラー2件、本文表示失敗

このブログの設置サーバのPHPを5.6から7.3に更新した。

サイトも表示できてphpinfo()は動作したが、WordPressが動作しなくなってしまった…。いや、お前がPHP更新しろというから作業したんだが…。

wp-blog-header.php内の下記の読み込みで失敗しているらしい。

 require_once( dirname( __FILE__ ) . '/wp-load.php' );

wp-config.phpを経由してからの wp-settings.php

各記事はタイトルしか表示されなくなっているのだが、編集画面だと本文もきちんと取得されているし、タイトルしかない各ページのHTMLソースを眺めるとソーシャルボタンへの情報として本文のデータが埋め込まれている。なので、動作していないとまではならないらしいんだけど…。

wp_includes/post-template.php内のthe_contentを見ると、get_the_contentでのデータ取得はできているのだが、その後のapply_filters('the_content', $content)を実行すると内容が空になってしまうみたい。どこかでadd_filterされているものがエラーになっているのか?

includes/{default-filters,blocks}.php内でフィルタ設定が行われているようだが、これらをオフにしても結果は変わらず…。

the_contentのapply_filterをコメントアウトすると、(レイアウトは崩れるものの)本文は表示されるので、このフィルタ処理が原因のようなのだが。

自前のmemolinkプラグインでのエラーだった…。preg_replaceのeオプションでエラーになっていたみたい??

[code]
$ php foo.php
PHP Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in XXX/wp-content/plugins/memolink/memolink.php on line XXX
[/code]

$ php foo.php
PHP Warning:  preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in XXX/wp-content/plugins/memolink/memolink.php on line XXX

split()もなくなってる…。explode()で対応することにした。

PHP5⇒PHP7については、下記のような非互換性が。他の動作しなかったプラグインもこのあたりの問題があったのだろう。

WordPressが「最新PHPは高速化」と煽るから更新してみていて、まだ効果は確認できていないところだが、下記のようにPHP5とPHP7だと2倍との記事もあった。

  • (PHP5とPHP7の速度を比較、2倍以上高速になるほどの違いとは - 【個人向け】レンタルサーバーの選び方)[https://serversenshi.com/php5-php7/]

また、ownCloud 10.0.10がPHP7.3だと動かなくなってしまっていて困ったが、ownCloud 10.3以降だと対応していて、急遽更新してなんとか動くようになった。

というか、元々は ownCloudのファイル暗号化機能だが動作しなくなっていて、それを動作するように設定しようとしたらPHP5だと対応できないみたいな表示もあってPHPを更新しようとしていた覚えも。

作業時に、occコマンドで更新しようとしたら、いくつかアプリが動かないとのエラー。とりあえず、disableにした。

2019-11-14T10:35:15+00:00 Repair warning: You have incompatible or missing apps enabled that could not be found or updated via the marketplace.
2019-11-14T10:35:15+00:00 Repair warning: Please install or update the following apps manually or disable them with:
occ app:disable drawio
occ app:disable files_clipboard
occ app:disable rainloop
2019-11-14T10:35:15+00:00 Repair warning: For manually updating, see https://doc.owncloud.org/server/10.3/go.php?to=admin-marketplace-apps
2019-11-14T10:35:15+00:00 OCRepairException: Upgrade is not possible
2019-11-14T10:35:15+00:00 Update failed

ownCloudも同期が遅くて困っていたが、こちらも速度改善するといいのだが。

Anaconda Spyderで補完エラー

あるパソコンで気づくとSpyderを使った際に、OpenCVパッケージの補完ができなくなっていた。様子を見ていると、起動直後の数十秒は補完動作をしているようなのだが、しばらくするとほとんどが補完候補から外れてしまう(なぜか、haarcascadesは残る)。

いったんSpyder 3.3.6を削除してインストールし直してもみたのだが変化がなくて、OpenCVパッケージを入れ直ししてもダメ。もちろんパソコンの再起動でもダメで、しかたがないので、Anacondaを含め、パソコン上の下記のPython関連のアプリをいったん全削除してからAnacondaを入れ直した(Anacondaは個々の環境も構築されていたのだが)。


すると、やっと補完がまともに動作するようになった(今のところ?)。

以前はPythonも3.6と3.7が共存していたりしたようだし、それも影響していたのかも。Spyderのバージョン表示もPythonの箇所のみ切り替わっていた。

WordPress更新で新規投稿できない⇒クラシックエディタに戻した

WordPressを5.2.4に更新したら、ログイン等はできるのだが、新しく記事を投稿できなくなってしまった。

赤い枠で「更新に失敗しました。」と出るだけ。

ブラウザのCookieを削除したら動作したとの話もあるので、こちらで対応してみたがダメだった。新エディタが影響しているようなのだが、パーマリンクのカスタム指定(「/年/月/日/ポスト番号」)も反映されていないみたい??

結局、最新エディタでなく、クラシックエディタに戻した(プラグインを入れた)ら作業できるようになった。

(※ただし、パーマリンクの形式が変更できない件は未解決⇒記事の入力時やプレビュー時には、パーマリンクの形式がデフォルトのままだったのだが、投稿を終えた際にはカスタム形式での保存となっていた。)

WordPress: スマホ対応とソーシャルボタン対応

このブログをスマホで見ると、WordPressで使用しているテーマが対応できてなくて、文字が非常に小さくなってしまって、ピンチアウトしないと読めない状況だったので、とりあえず Multi Device Switcher プラグインを入れて、スマホ用のテーマは Twenty Seventeen だかに切り替えてみた。

下のサイト表示が…

下のように↓

スマホでも文字サイズが見やすくなってよかったが、トップ画像が何かしら観葉植物表示のおしゃれなものに変わってしまった。ちょっと雰囲気変わりの過ぎの気もするが、まぁいいか…。

―と思ったが、トップページは画面の半分以上が観葉植物になってしまった。ダメだこりゃ。画像を変えればいいのかな。

あと、検索で出てきたプラグインを見ていたらソーシャルボタン追加のものがあったので、そちらもおまけで入れてみた。

xyzzy:未保存バッファに自動でファイル名を紐づけたい

xyzzyで、新規バッファにずらずらーっとテキストのメモを作って行って、いざそれを保存しようとC-x C-s (save-buffer)すると、まだ未保存のバッファの場合は「ファイル名がありません」とのエラーダイアログが表示されてしまう。

そうすると、いちいちそのダイアログを閉じてから、別でメニューの「ファイル⇒名前を付けて保存」(これはsave-buffer-dialog に対応?)を選んでファイル名を指定しないといけなくなる。そうではなくて、「ファイル名がありません」と出てもいいが、その後にすぐにこのファイル保存ダイアログへ移行して欲しい。

また、ワードだとファイルに未保存の場合に「上書き保存」を選択したとしても、すぐに「名前を付けて保存」に切り替わったダイアログが出てきて、さらに作成中文書の1行目を抜いてきてファイル名の候補としてくれる。

このワードの機能がけっこう便利なので、xyzzyのバッファのファイル保存の際にも、自動でダイアログを表示してさらに1行目をファイル名の候補にしたりできるようにしたい。(通常のテキストファイルなら1行目を抜いてくる(+ファイル名用に使用文字をクリーニング)でもよさそうだが、通常のプログラムやスクリプトファイルだと「#!/bin/sh」などの記述(シバン/シェバン)が入るので、ヘッダを解析したりしてファイル名に適当そうな情報を抜いてくる必要もありそう。)

既にこのようなことを実現している.lスクリプトも、xyzzyならありそうなのだが、探し方が悪いのか見つけられなかった。フックとかもありそうなのだが、こちらも見つからない。

で、自前で何か設定できないかと、GitHub上のxyzzyのリポジトリ検索してみると、とりあえず、buffer.lmsgdef.hに記述があるらしい。buffer.lのほうは終わりに「。」付きでダイアログと違うので、msgdef.hの定義のEno_file_name でさらに検索してみると、下記になった。

fileio.ccの該当箇所を見てみると、「lisp r = run_hook_until_success (Vsave_buffer_no_filenames_hook);」との記述が!

この「save_buffer_no_filenames_hook」のフックを使えばどうにかできるのかな??

とりあえず、ファイル保存ダイアログ表示(+1行目のファイル名候補)だけでも~。

下記の形でファイル名なしの際に確認ダイアログを表示するようにはできた!
[code]
(defun save-buffer-dialog-query ()
(interactive)
(if (yes-or-no-p "ファイル名を付けて保存しますか?") (save-buffer-dialog)))
(add-hook '*save-buffer-no-filenames-hook* #'save-buffer-dialog-query)
[/code]

フック記述の参考サイト:

おまけ:
buffer.l を見てたら、ファイル内容がディスク上で更新されている際に出てくる「いちいちうざい」があった。

未だに、この選択肢の意味がよく分かってないし、選択してもxyzzyの挙動が変わるような感じがしないのだが、どういう指定なんだろう??

←Older