sirius2wpの「債務整理」サイトで実証実験で02setup.cgiが500エラーになる件。
01startup.cgiは動いたので、ここでCGIが動かないわけじゃない。
SIRIUSからアップロードしてみたからそれが悪かったのかと思ったけど、そうでもない。
UTF-8だったし、BOMは入ってないみたいだし。
ローカルのPythonサーバーでも、問題になるようなところはない。
500エラーなので、まともに動いてない感じのはず。
でも「夫の浮気」では動くし、準備作業のミスを再確認するけど大丈夫そうだし、単にコードの問題じゃなく、やっぱり「債務整理」サイトの問題と断定。
日本語ドメインが悪い?
怪しいのはWordPressからユーザーIDを取得するところ。
PCのコマンドプロンプトでPython起動して、ソースと同じ用に日本語ドメインをPunycodeしたURLでWordPressへアクセスしたら、問題なくユーザーIDは取得できた。
ということで仕方なく、CGIのソースを削りながら少しずつ動かしていくデバッグするしかない。
そしたら、やっぱりWordPressにユーザーIDを取得するところでエラーになっていた。
urllib.urlopen()の中の、SSL関連の処理で『「借金解決したい.xyz」とPunycodeの「xn--n8jubya4263a9v3ax4zb8ul.xyz」が一致しない』とエラーになっている。
いやいや、「借金解決したい.xyz」のままで比較しちゃアカンだろ…って、バグじゃないか?と思えるエラーだった。
でもPCからは問題なく接続できたのに?って、TeraTermをインストールしてXサーバーにSSH接続して、PCと同じ用にPythonスクリプトから実行しても同じエラーに。なのでCGIの問題じゃなく、XサーバーのPythonの問題。
バージョンを確認したら、XサーバーのPythonはバージョン3.6.x、PCのは3.8.3。
PCのバージョンまでにバグFixされたのね。
ってことで、これはXサーバーのPython(バージョン)で日本語ドメインでSSLを使ったときの問題。
仕方がないので、CGIからユーザーIDを取得するするときは、httpsじゃなくhttpで接続することにした。httpsでなくても問題なく取得できるみたいなので。
まったく、Xサーバーも新しいPython入れてくれればいいのに!って話でした。