当WEBサイトはMovableType6で運営している。先日「Can’t call method “execute” on an undefined value」というエラーが発生して記事の修正や新規追加ができなくなった。この日は3件のブログ記事を書いており、2件までは普通に書けた。3件目の記事を公開した直後にこのエラー表示がでた。記事一覧は見ることができるが、そのうちの一つの記事をクリックして修正しようとするとエラーになる、このエラーの原因と対策を探ってみた。
「Can’t call method “execute” on an undefined value」の原因
「Can’t call method “execute” on an undefined value」が出たのは初めてではない。以前もサイトマップ生成(sitemap.xml)のテンプレートでこのエラーを起こしている。このときの原因はMovableTypeは構造上の仕様で999件以下しか管理できない部分があり、1000件になった瞬間にエラーになるということだった。
当ブログでは、記事数が3000件を超えており、1000件を超えた分のsitemapを分割している。ここでエラーが起きたのではないかと推定した。早速、このsitemap.xmlのテンプレートの内容を確認し修正した。
<MTEntries offset=”3996″ lastn=”999″>
<url>
<loc><$MTEntryPermalink encode_xml=”1″$></loc>
<lastmod><$MTEntryModifiedDate utc=”1″ format=”%Y-%m-%dT%H:%M:%SZ”$></lastmod>
</url>
</MTEntries>
</urlset>
しかし、今回のエラーはこの部分が原因ではなかった。なんとタグが1000件になっていた。タグが1000件に達したことで「Can’t call method “execute” on an undefined value」というエラーになっていたのだった。
このようにタグの一覧は表示することができる。ブログ記事の一覧も表示できる。しかし、ブログ記事の一覧から記事をクリックして開こうとすると「Can’t call method “execute” on an undefined value」というエラーが表示され編集できない。
そもそもこのタグは、ほとんどが記事ではなく写真アイテムだった。写真の説明文と同じものをコピペしてタグの部分に貼り付けていたことがあり、そのことが仇になったようだ。
対策としては、タグ一覧から不要なタグを削除することである。999以下であればエラーにならないが、余裕をみてこのさい不要なものは一気に削除して100以下にまで減らした。これ以降、「Can’t call method “execute” on an undefined value」というエラーは起きていない。
この記事を書いた遠田幹雄は中小企業診断士です
遠田幹雄は経営コンサルティング企業の株式会社ドモドモコーポレーション代表取締役。石川県かほく市に本社があり金沢市を中心とした北陸三県を主な活動エリアとする経営コンサルタントです。
小規模事業者や中小企業を対象として、経営戦略立案とその後の実行支援、商品開発、販路拡大、マーケティング、ブランド構築等に係る総合的なコンサルティング活動を展開しています。実際にはWEBマーケティングやIT系のご依頼が多いです。
民民での直接契約を中心としていますが、商工三団体などの支援機関が主催するセミナー講師を年間数十回担当したり、支援機関の専門家派遣や中小企業基盤整備機構の経営窓口相談に対応したりもしています。
保有資格:中小企業診断士、情報処理技術者など
会社概要およびプロフィールは株式会社ドモドモコーポレーションの会社案内にて紹介していますので興味ある方はご覧ください。
お問い合わせは電話ではなくお問い合わせフォームからメールにておねがいします。新規の電話番号からの電話は受信しないことにしていますのでご了承ください。
【反応していただけると喜びます(笑)】
記事内容が役にたったとか共感したとかで、なにか反応をしたいという場合はTwitterやフェイスブックなどのSNSで反応いただけるとうれしいです。
遠田幹雄が利用しているSNSは以下のとおりです。
facebook https://www.facebook.com/tohdamikio
ツイッター https://twitter.com/tohdamikio
LINE https://lin.ee/igN7saM
チャットワーク https://www.chatwork.com/tohda
また、投げ銭システムも用意しましたのでお気持ちがあればクレジット決済などでもお支払いいただけます。
※投げ銭はデジタルコンテンツ購入という通販のしくみにしました。
※投げ銭は100円からOKです。シャレですので笑ってください(笑)