
サーバーの変更とエラーログの取得方法について、から回答があった。 (1) 契約サーバーにて直近でメンテナンスや仕様変更等は行われていない。 (2) サーバーのエラーログはコントロールパネルのファイルマネージャーからダウンロードする。 さっそくエラーログをダウンロード。拡張子が gz の UNIX 系圧縮ファイルなので、解凍してテキストエディタで開く。 [Tue Nov 18 12:45:16.391378 2025] [cgi:error] [pid XXXXXXX:tid XXXXXXX] [client xxx.x.xx.xx:0] AH01215: stderr from /home/rXXXXXXX/public_html/onthisplanet.net/search/search.cgi: Can't use 'defined(%hash)' (Maybe you should just omit the defined()?) at ./jcode.pl line 679, line 855., referer: https://www.onthisplanet.net/blog/20251116.html [Tue Nov 18 12:45:16.391509 2025] [cgi:error] [pid XXXXXXX:tid XXXXXXX] [client xxx.x.xx.xx:0] AH01215: stderr from /home/rXXXXXXX/public_html/onthisplanet.net/search/search.cgi: Compilation failed in require at search.cgi line 97, line 855., referer: https://www.onthisplanet.net/blog/20251116.html [Tue Nov 18 12:45:16.392026 2025] [cgi:error] [pid XXXXXXX:tid XXXXXXX] [client xxx.x.xx.xx:0] End of script output before headers: search.cgi, referer: https://www.onthisplanet.net/blog/20251116.html なるほど。jcode.pl で defined は使えないので削除せよと書いてある。そのとおりやってみよう。 念のため、ネットでこの問題の解決方法を検索してみたら、があった。サーバー側の Perl のバージョンアップにより defined 関数が使えなくなったのが原因のようだ。 次のように jcode.pl の679行目と688行目を修正してみた。 &init_z2h_euc unless defined %z2h_euc; ➔ &init_z2h_euc unless %z2h_euc;(または &init_z2h_euc if !%z2h_euc;) &init_z2h_sjis unless defined %z2h_sjis; ➔ &init_z2h_sjis unless %z2h_sjis;(または &init_z2h_sjis if !%z2h_sjis;) サイト内記事検索を行ってみた結果、正常に実行できた。なお、"unless " と "if !" は否定を表すが、どちらにしても結果は同じだった。 同じ修正を https://www.bbinc.jp/ と https://www.webfielder.com/stroll/ でも行い、正常に動作することを確認した。 わりと簡単に解決したのだが、サーバー提供元へ問い合わせた際に Perl を更新したと回答してほしかった。