「PHP」に関する日記(3)

<前 次>

Docker Desktop

リダイレクトループの件は、リバースプロキシ兼TLSに使っているNginxとPHPの実行環境になるApacheの間の通信が暗号化なしのHTTP通信だったため、クライアントとの間がすでにHTTPSなのに気付けず強制HTTPSのリダイレクトを繰り返していたということでした。
強制HTTPSに条件を追加することでとりあえずは回避しました。
あとは、画像がうまく表示されないのをどうにかしないと。

PHPUnit

ちょっと前からテストが動かなくなっていたので、ちょっと修正していました。
ちょっと修正というにはちょっといろんなところを調べまわってちょっと大変だったのですが。
で、最終的に何が悪かったのかというと、ネットの疎通確認に確実に存在するURLとして http://example.com/ を使っていたら、https://example.com/ にリダイレクトされていて、httpの方に繋がらないぞという判定になっていたことでした。

大変だったのは、それを突き止めるために別ソフトの修正を行ったら、修正が何も反映されず古いビルドが使われ続けたこと。
こっちは、修正が反映されなくなり始める前のバージョンまでソースを差し戻して、そこから新たに修正し直しました。
こういうのをどうにかできるのはGitなどバージョン管理システムのいいところですね。

Haxe(Today I Learned)


Haxe、興味は持ちつつも全然触ってなかったので、ちょっと手ごろなサンプルコードをAIに出してもらいました。
コマンドは少々修正が必要だったけど、コードの方は特に問題なくビルドできました。

出来上がったコードは、C#側は.NET Framework 2.0、PHP側はPHP 7.0相当のコードが出てきて、両者とも、Haxe自身の言語仕様やライブラリとの互換性のためのファイルがいくつか追加されていました。
C#の方は、丁寧にもDLLにまでビルドしてくれたので、コードで共有しなくても、このDLLをプロジェクトに追加すれば、Haxeで作ったライブラリをC#で使えることになります。
PHPの方は、パッと見た感じ、互換性用のファイルが、PHP 8.2ではエラーになりそうな感じだったので、何か追加対応をしてエラー解消するか、これのためのPHP 7.0サーバーを作るか、何か対応が必要そうです。

プロジェクト実質停止してるけど、funyakあたりでも何かしらの形で使ってみたいんですよね…。

ドラゴンクエスト10とアンパンマンDB

ドラゴンクエスト10(ァォィョッュ)

クイーンディオーレ号のシャンデリア

  • クエスト「リーネさんのセレブな日常/素敵なナイトクルージング」をクリアした!
  • クエスト「リーネさんのセレブな日常/刺激的なシーサイドラン」をクリアした!

以前別キャラで茶番茶番と言っていたあのクエスト、ァォィョッュでも途中まで進めました。
これ進めておかないとアクセ屋のカーメロさんがずっとうるさいのでね。
本当は一気に終わらせてしまうつもりだったのですが、記憶していた以上にあちこち走り回らされて、今日中には終わりませんでした。

しかし改めて同じクエストをやってみて、ドラクエ10は人間相手だと手ぬるいなぁ…と。
モンスターみたいに息の根を止めてはいけないにしても、元気に走り回れないぐらいダメージ与える(婉曲表現)とか、せめて身柄を拘束ぐらいはしないと…。

ともかく、他の写真は以下から。
写真置き場「2023/09/04」

アンパンマンDB(システム)

テスト環境でアップロードができない問題、解決しました。
サーバーとPHPを繋ぐFastCGIが、特に何も指定しない状態だと、ほとんど無に等しいアップロード容量になってしまうのが原因でした。
ここはPHPに合わせて、2GBまでアップ可能にしてみました。
まあ、動画サイトじゃないのでそんなにアップすることはないけど。

アンパンマンDB

テスト環境の方で、ファイルをアップロードできないトラブル発生中。
本番環境の方はアップロードできるので、運営には今のところ支障はないのですが、新機能の開発とかには影響があります。
PHPの方の設定には問題なさそうだから、Webサーバーあたりかなぁ。

バイオハザードRE4とPHP

バイオハザード RE:4 Chainsaw Demo

ゲーム記に『バイオハザード RE:4 Chainsaw Demo』を追加
ゲーム記にページ作りました。
体験版をやった限りでは高く評価してるんですが、製品版と買うかというと、ちょっと無理かなぁ…と思っています。
以前も書いたように、私がもう操作下手過ぎるんですよね。
視点操作が逆になりがちで、操作中に混乱することが昔から多いんです。
ただ、だからと言ってTPS・FPSを敬遠していると、そのジャンルの面白いゲームを一生楽しめないし、安売りしている過去作で練習してみるというのも一つの手かも…。

PHP

まだ開発環境でエラーが起きることがあるので、本番環境となるべく同じになるように設定を調整していました。
デフォルトでZIPが使えないのが盲点だった。

PHP8.2

開発環境もPHP8.2に上げました。
Windowsなんで無難にXAMPPでいいかーって思ってインストールしたら、まさかのPHPがバグってるバージョン(正確には拡張モジュール)。
バグってないバージョンでプログラムを上書きとかもしてみたのですが、うまくいかず。
結局、XAMPP抜きでインストールする手順で、最新版をFastCGIとして設定したら、期待通りに動作しました。
もともとXAMPPに入っていたPHP関連の設定は邪魔になるので全部消しました。

アンパンマンDBとPHP

アンパンマンDB(記事更新)

「ロボリィとぽかぽかプレゼント」の作品情報を更新
監督が判明してたので追記しました。

PHP8.2

Composerもアップデートして、移行時に発生したDEPRECATEDは大体収まりました。
あとは開発環境を8.2にできれば完了だけど、今まで通りXAMPPにするか、今どきらしくDockerにするか…。
Windows版のPHP8.2は一度入れてみて、必要なモジュールがバージョン不整合で使えないみたいだったので、その法則で行くと、Windows版のXAMPPも危ないような気がしています。
不慣れで不安だけどDockerでどうにかしてみるか。

アンパンマンDBとPHPとドラゴンクエスト10のプレイヤーイベントを検索および通知するサイト

アンパンマンDB(記事更新)

キャラ「ロボリィ」を更新
ゲスト声優が発表されたので、追記しました。

PHP8.2

切り替えました。
今のところ致命的なエラーは起きていませんが、PHPUnitがバージョン足りなくてテストできなかったり、DEPRECATEDが思ってもみなかった場所で出たりして、対応をしていました。

ドラゴンクエスト10のプレイヤーイベントを検索および通知するサイト

プレイベの通知メールです。
普通は一般ユーザー(閲覧者)が見るところではエラーはログにだけ残して非表示にしているのですが、メールが対応漏れてました。
今は修正完了しています。
こういうの、日記で事後報告じゃなくて、ちゃんと告知できるような仕組みも必要かなぁ。

PHP8.2

サーバー会社に問い合わせようと思って、起こっている問題の範囲を特定するため、PHPのバージョン別に確認しようとしたところ、PHP8.2が使えることが判明しました。
現在使っているのがPHP8.1なので、マイナーバージョン1段階アップです。
8.2の方ではWarningは出ないし、当然ながら新機能もあるので、切り替えてもよさそうです。
とりあえず、本番環境に限りなく近いステージング環境では、PHP8.2に上げてもDEPRECATED以外のエラーは出ていません。
DEPRECATEDは将来的になくなる機能を使っているという警告で、バージョンアップの際に必ずと言っていいほどぶつかるものの、次のバージョンアップまでに直せばいい類のものなので、切り替えのタイミングでは特に問題はありません。
ただ、開発環境の方が、なぜかモジュールのバージョン不整合を起こしており、切り替えに手間取る可能性がありそうです。

TGWS内部処理とPHPと美文のキャラ倉庫

日記に書けるような活動しとらん。

TGWS内部処理

常々やっていることですが、今日も細かいエラーを取ったりとか管理画面を微妙に便利にしたりだとかコードの効率化とかしてました。

PHP

先日から続いているWarningの件、様子見てても直る気配がないので、そろそろ問い合わせてみようかと思います。

美文のキャラ倉庫

XFREEのWordPressでやっていたのですが、去年書いたように、データベースの文字コードの問題で記入に不便があり、フリーのサーバーゆえにサポートもないので、やっぱり自前でホスティングしようかなとか考えています。

アンパンマンDBとPHP

アンパンマンDB(記事更新)

記事…じゃないけどシステムじゃない方なんでこの見出しでいいか。

Twitterのハッシュタグのページを更新
#映画アンパンマンで衝撃的だったこと選手権を追加しました。

Twitter APIが使えなくなったらこの一覧の自動更新も止まりますが、一覧自体は残すつもりです。

PHP

未明の1時半あたりから、CRONで動かしているPHPが警告を出し続けています。
「Failed loading Zend extension 'opcache'」とのこと。
拡張機能がなぜかなくなっているようです。
うちはレンタルサーバーを借りている身なのでちょっと手出しができませんね…。
警告だからエラーで止まるわけじゃないけど、数日で直らなかったらまた問い合わせてみよう。

GBBS

旧掲示板…動かなくなってたんでPHPへの移行を試みていたのですが…もともとShift_JISだったのに加えてPerlの全力で活用&複雑なレイアウトのやつだったので難航しています。
そもそも役割は新掲示板に引き継いで旧掲示板は動いているころからすでに閲覧専用だったので、これはもう、レイアウトを全面的に捨てて過去ログをシンプルに表示するだけでいいかなとか思い始めています。
どう考えても主要じゃないシステムに時間がかかりすぎている。

GBBS

古いCGIの移行作業として、GBBSの設定周りをPHP化していました。
未定義のグローバル変数多用しててつらい…。

アンパンマンDB

更新履歴管理が動かなくなっていたので修正していました。
PHPに型宣言がなかったころからアンパンマンDBがあって、その頃はドキュメントコメントで型を書いていたのですが、実は管理画面ではこれを守っていなかったんですね。
で、PHPのバージョンを上げて、型宣言が正式にできるようになったので、コメント通りの型を指定したら、というわけです。
こういうの、自動テストをちゃんと書いていれば見つかる類のものですし、実際、修正の際には自動テストを書きました。

今、TGWS全体で、テストが必要なコードのうち、実際にテストできているのは54%。
残りの46%は、何かが起こっても自分で見に行くまでは何もわからないのです。
やはり、カバレッジ(コード網羅率)を上げていかねば。

サーバー

500エラーが多い件、問い合わせたらPHPのバージョンを変えて様子を見てほしいと言われたので、同一サーバー内の別ドメインに検証環境としてアンパンマンDBのPHP8.1版と7.4版を作り、2ヶ月ばかしひたすら突っついていました。
その結果、2ヶ月間ほぼエラーは起こらず。
PHPのバージョン違いか、サーバー内の何かのプログラムが無差別killしているかだと思っていたのですが、どちらも違っていたようでした。
去年のサーバーリニューアルのときからだから、新サーバーへの移行時に何かのファイルが壊れたり、ハードウェア的に不安定な場所に配置されたり、そんなあたりか…とか想像するけど、その根拠も特にないんですよね。
新規に作った検証環境ではエラーが起きないから、それと同じになるように、全ファイル再配置してみるか?

ドラゴンクエスト10とリンク集

ドラゴンクエスト10(ミフミン)

眠るネリム
デスマスターの職業クエスト、全5話中4話まで。
なんというか…叙述トリックでしたなあ。
物語の真相がわかって、いよいよすっきりと決着をつける、という段階です。

他の写真は以下から。ボス戦もあるよ。
写真置き場「2022/08/09」 | ミフミンのDQ10メモ

リンク集

ずいぶんご無沙汰ですが、うちのサイトのリンク集、古いバージョンのPerlで作られたCGIで、いろいろと今の運用と合わないので、PHPで書き直し中です。
ついでに、昔のデザインのままだったのも、現在のデザインに合わせようと思っています。
ただ、データ形式だけは、昔のままを維持するつもりです。

現在のPerlCGIはランダムバナーリンク集として配布していますが、リニューアル後はTGWSに特化して作るので、配布しないつもりでいます。

PHPとアンパンマン

PHP

配列のアンパック、バージョンは合ってるはずなのになぜか公開用サーバーでは使えませんでした。
テスト用サーバーでは大丈夫だったのに…。
早まって全部置き換えなくてよかった。

それいけ!アンパンマン ドロリンとバケ〜るカーニバル

また見てきました。
今回気付いたことも、アンパンマンDBに追記してきました。

@WIKIとアンパンマンDBとPHP

@WIKI

管理画面のメモ用Wiki、@WIKIに移転しました。
もともと非公開コンテンツだったので、@WIKIでもやっぱり非公開です。
ページ名だけはURLにアクセスすればわかってしまうのですが、まあ、URLも非公開なので多分大丈夫でしょう。

アンパンマンDB

「鉄火のコマキちゃんとミス・マリーネ」の作品情報を追加
「どんぶりまんトリオとオーロラ姫」の作品情報を追加
来週放送情報の追加。
美しい大人の女性のキャラクターがABともに出る感じですね。

PHP(Today I Learned)

PHP: 配列 - Manual
配列のアンパック。
array_mergeでやっていたような配列の結合を、[..$array1, ...$array2]みたいに記述できる機能です。
簡潔な構文で記述できて、性能もよくて柔軟性も高いそうです。

PukiWikiを復活させようと試行錯誤していた時に見つけました。
機能自体は7.4からあったのですが、うちのサイトでは7.4をすっ飛ばして一気に8.1まで上げてしまったので、気付けませんでした。
ネット上の記事では、JavaScriptでの同様に機能からの類推で、「スプレッド構文」と呼ばれることが多いようですね。

ただ、便利で、今後は積極的に使っていきたいとは思うのですが、性能がいいからと言って、過去のコードのarray_mergeまで全部置き換えるのはちょっと無謀かなって思いました。
というのも、array_mergeを削除するのはいいとして、丸括弧()で囲っていた部分を角括弧[]で囲ったうえ、両方の配列に...を付けるって言うのが、繰り返し間違いなく行うには結構複雑な手順なのです。
特に...忘れに関しては、エラーが出ずに、ただ望まない処理結果が返るだけなので、間違った修正をしても気付かずに、発見したころには元のコードを忘れていて修復不可能、ということが起こりそうなのです。

<前 次>