WordPressのインポート・エクスポートエラーのメモ
えらくはまったので備忘。
- イメージファイルの多いコンテンツをWordpressでexport/importしたい
- エクスポートはDeMomentSomTres Exportを使用。これを使用すれば画像もサムネイルも正しく移行できる
- が、エクスポートファイルや画像が大きいとimportの際にエラーになる(phpがタイムアウトする)
- エラーになると画像は途中でアップロードされた状態となる。(画像→記事の順でimportされている模様)
- importを繰り返すと画像は最終的にアップロードされるが、記事がアップロードされる最後のimport以前のimportで取り込まれた画像は記事とリンクしていない(記事中のurlはexportした側のwordpressのディレクトリを見ている)。アップロードされた画像はリンク先の記事が存在しない状態になる。
解決した手順
- php.iniのmax_execution_timeを大きくする(30→300)
- 必要に応じてupload_max_filesizeも大きくする
これだけではだめ。apacheのタイムアウトが短い場合はこちらも長く。さらに、
- /usr/local/apache/conf/php.confにIPCCommTimeout 300を追加
これはmod_fcgid.cの設定らしい。fcgidはphpのプロセスを「keep alive」のように一定時間killせず保持しておく高速化のためのモジュールらしいが、これの保持期間がデフォルト40秒だった。
なお、IPCCommTimeoutを設定する場所は環境依存と思われる。(httpd.confで設定する環境もあり)
課題
300秒でも現実的には短すぎ。天リフの場合30記事分くらいwww なのでカテゴリで分割してねちねち移行するしかないw
もちろん移行作業終了後は設定を戻すことを忘れずに。現設定では、たぶんアクセス集中で落ちやすくなっているはず。