Movable Type 5で「Got an error: Can't use 'defined(%hash)' (Maybe you should just omit the defined()?)」というエラーになる場合の対処
Movable Type 5で「Got an error: Can't use 'defined(%hash)' (Maybe you should just omit the defined()?)」というエラーになる場合の対処について紹介します。
1.問題点
過去のバージョンですが、Movable Type 5で管理画面にアクセスすると「Got an error: Can't use 'defined(%hash)' (Maybe you should just omit the defined()?)」というエラーに遭遇しました。
ログイン画面でこのエラーが発生するため、ログインすることもできません。
2.原因
サーバのPerlがバージョンアップされたため、MT5のPerlバージョンと適合しなくなったようです。
3.対処
調べたところ、「Got an error: Can't use 'defined(%hash)' (Maybe you should just omit the defined()?)」のエラーに遭遇するk所は下記の3ファイルでした。
extlib/Data/ObjectDriver/Driver/DBD.pm
extlib/I18N/LangTags/Detect.pm
extlib/SOAP/Lite.pm
それぞれ下記の修正を行います。
extlib/Data/ObjectDriver/Driver/DBD.pm
14行目
変更前
unless (defined %{"${subclass}::"}) {
変更後
unless (%{"${subclass}::"}) {
extlib/I18N/LangTags/Detect.pm
140行目
変更前
if defined(%{$module . "::Lexicon"}) or defined(@{$module . "::ISA"});
変更後
if (%{$module . "::Lexicon"}) or defined(@{$module . "::ISA"});
extlib/SOAP/Lite.pm
465行目
変更前
unless (defined %{"$protocol_class\::Client::"}
変更後
unless (%{"$protocol_class\::Client::"}
これでログインはできるようになりますが、ログイン後に別のエラーが発生します。
こちらの対処方法ついては、別エントリーで紹介します。
なお、操作によっては異なるエラーに遭遇するかもしれません。予めご了承ください。
4.参考サイト
- MovableTypeプラグインの独自CGIをNginxに対応させる方法
- 旧バージョンのMTでPerl5.26(Perl5.24以降)に対応する方法
- MT6.2のファイルアップロードで「Undefined subroutine &POSIX::strftime」になる問題の対処
- Movable Typeのファイルアップロードで「アップロードしたファイルは大きすぎます。」というエラーになる場合の対処
- Movable Typeのパスワード変更で「URLが不正です。」というエラーなる件についての対処
- Movable Typeで「Cannot find column 'blogs' for class 'MT::Blog'」となる場合の対処
- Movable TypeでMTPageNextタグが効かなくなる不具合について
- Movable Typeの復元で「Request-URI Too Large」になるときの対処
- サーバ故障と「Connection error: Too many connections」エラーおよびMySQLテーブル破損について
- Movable Typeでエラー発生箇所を特定する方法
- IE9でMovable Typeを利用する方法
- MTIfタグにtagモディファイアを利用する場合の注意事項
- Movable Type 5のブログの設定で「Can't call method "label" on unblessed reference」が発生する問題について
- Movable Type 5.03へのアップグレードで再構築時に「Script Error」が発生する件について(つづき)
- XREA/CORESERVERでMovable TypeのCaptchaが表示されない不具合について