サポート » バグ報告と提案 » 4.1.2 へアップデート後、投稿記事の公開ができない

  • sakurai1225

    (@sakurai1225)


    初めての投稿です。稀な状況だとは思いますが自分での解決ができなかったためご教授願います。

    新規投稿時にPHPのエラー
    Warning: Creating default object from empty value in /wp-admin/includes/post.php on line 581 Call Stack: 0.0000 246424 1. {main}() /var/www/vhosts/default/wp-admin/post-new.php:0 0.4185 12565952 2. get_default_post_to_edit() /wp-admin/post-new.php:71
    が表示されて、公開ボタンの表示がレビュー待ち〜のになり公開ができませんでした。
    プラグインはすべてOFFにした状態でも同様の現象です。
    他に気になった点としては投稿画面のコメント欄に「不明なエラーが発生しました。」と表示されます。
    テーマのアップデートも最新のものへ変更しました。

    ・WordPress のバージョン
    4.1.2
    ・使用しているプラグインとテーマの情報
    プラグインはすべてOFFの状態 twentyfourteen
    ・PHP、MySQL のバージョン
    PHP PHP 5.5.24 mysql 5.5.39-36.0
    ・サーバー環境(ホスティングサービス名、OS、ウェブサーバー等)
    CentOS release 6.5,お名前.com vps nginx-1.6.1-1.
    ・ブラウザ
    Chrome 42

    症状としてはこのトピックと同じです。
    https://ja.forums.wordpress.org/topic/148982?replies=8

    同じサーバーの状態でやむなく4.1.1へ戻していますがこの現象は発生していません。

15件の返信を表示中 - 1 - 15件目 (全32件中)
  • katgum

    (@katgum)

    私も初めての投稿となります。sakurai1225さんと、類似の症状が出ております。

    ・新規投稿時にPHPのエラーは表示されないが、
     公開ボタンの表示がレビュー待ちの状態になり公開ができず。
     上記から、公開ボタンは押せるが、その後の投稿一覧に記事が表示されず。
    ・また新規投稿の画面において、パーマリンクの自動生成の表示が表示されず。
    ・プラグインはすべてOFFにした状態でも同様
    ・コメント欄の投稿をすると「エラー:コメントを保存できませんでした。
     後ほどもう一度お試しください」と表示
    ・既存の投稿を更新すると、更新内容が反映されるが文字化け発生
     (???で埋め尽くされます)

    上記より、MySQLがらみの不具合にも見えるので、念のためホスティング業者には障害が起きていないか問い合わせています。

    また、私の環境は以下の通りとなります。

    ・WordPress のバージョン
    4.1.2
    ・使用しているプラグインとテーマの情報
    プラグインはすべてOFFの状態 TCD Dynamic
    ・PHP、MySQL のバージョン
    PHP 5.3.29 mysql 5.1.73
    ・サーバー環境(ホスティングサービス名、OS、ウェブサーバー等)
    CORESERVER C
    ・ブラウザ
    Sleipnir 6

    どなたか、回避方法をご存知でしたら、アドバイスをいただきたく存じます。

    よろしくお願いいたします。

    Kanjy

    (@kanjy)

    日本語ではなくキリル文字ですが、類似の症状がバグとして処理中のようです。

    Ticket #32051 Creating new posts/terms with non-English characters is broken for tables with cp1251 collation in 4.1.2

    上記リンク先にあるパッチ 32051.4.diff を試してみませんか。

    katgum

    (@katgum)

    >Kanjyさま
    リンク先のパッチを試みようとしましたが、私にはLinuxのパッチを当てるまでのスキルがなく、結局は復旧を優先してWordPressをバージョンダウンしました。

    ご親切にお答えいただいたにもかかわらず、そのワークアラウンドを試す事ができず申し訳ありませんでした。

    ご返信ありがとうございました。

    Hinaloe

    (@hnle)

    おはようございます。

    WordPress4.2,及び4.1.3がリリースされました。(この問題の修正を含むはずです。)

    よければアップデートして確認してみてください。

    ゆたか ちひろ

    (@yutakachihiro)

    私も同様のエラーが出ています
    4.1.3では改善なしでした
    現在2つのドメインを使いさくらインターネットの
    同じサーバー、ディレクトリ上で4つのWPを運用しています
    1年前から運用しているBドメインのWPサイトには
    同じ環境でもエラーは出ておりません。
    長く運営しているAドメインの3つは全く同じ症状です

    新しいサイトの方は4.1.3においても
    エラーは出ませんでした。

    4.2はまだ試していないですが
    エラーの出ているWPサイトは現在
    4.1.1にして運用しています。
    4.2で改善していると良いのですが…

    kebosebo

    (@kebosebo)

    4.2でも同様の問題が発生しています。

    Hinaloe

    (@hnle)

    DB周りに関連するバグのようですが該当サイトのテーブルの文字セットはどうなってますか?
    また該当サイトはいつ頃から運営されていますか?

    katgum

    (@katgum)

    >Hinaloeさん
    私の場合は、WordPress ME 2.2 (2008年1月リリース)を使い始め、バージョンアップを繰り返し今に至ります。

    テーブルの文字セットは、当時のままEUC-JPを使い続けています。

    ゆたか ちひろ

    (@yutakachihiro)

    >Hinaloeさん
    >katgumさん

    先ほど確認してみると、古いWPは9年ほど前からずっと
    バージョンアップしている為同じくEUC-JPでした。

    1年前に導入したエラーの出ていないものはUTF-8です
    なるほどこれが原因なのだろう、と思いますが
    さくらインターネットのレンタルサーバーの場合は
    phpMyAdminしか使えないです、改善策はあるのでしょうか?

    検索してみると変更は一筋縄ではいかないような備忘録などありましたが
    作業途中にトラブルが起きた場合に対処できるか不安な気もします。
    このまま待っていてバージョンアップで改善されるようなら
    待つのもアリなのかなと思っていますが、それはそれでセキュリティ的に
    誰かに迷惑をかけてしまわないか不安が残りますね。

    便乗で恐縮ですが、アドバイスございましたらよろしくお願いします。

    ontenman

    (@ontenman)

    私も、文字化け、新規投稿、編集更新ができません。
    また、ウィジェットにある「最新の投稿」も使用できません。
    プラグインをひとつずつ停止しながら確認しましたが
    解決できませんでした。
    どなたか解決方法をご存知でしたらご教授願います。

    Senri Miura

    (@senribb)

    私も一部の記事の更新が出来なくなりました。
    7000文字を超える記事の更新をしようとすると、ブラウザに「長時間応答中のスクリプトが原因で応答しません。」のメッセージが出てブラウザが固まってしまいます。
    記事に関連するプラグイン(WordPress SEO, TinyMCE Advanced, MP3-jPlayer, Easy FancyBox, Crayon Syntax Highlighter)がWordPressの新バージョンに対応していないのが原因かもしれませんが、詳しい原因は良く分かりません。⇒ 当面プラグインの更新待ち
    また、一部のプラグイン(Broken Link Checker, NewStatPress)で文字化けやログ表示でエラーが発生するなど、不具合が多発しております。
    なお、WordPress 4.1.2を4.2にバージョンアップしても、この現象は治りませんでした。
    何か良い解決法があれば、ご教授願いたいと存じます。

    ちなみに、DBサーバーの文字セットは、「UTF-8 Unicode (utf8)」です。

    Hinaloe

    (@hnle)

    DBの文字セットをUTF8に変えるのがいいのは事実っぽそうですけど変換が見た感じ大変そうですね…

    とりあえず #32090 が該当チケット。やっぱりこっちも面倒そうなのだけれども近く修正されそう?

    とりあえず暫く4.1.1を使うのが確実そうですね…ただ脆弱…

    @senribbさん

    DBの文字セットはどうなってますか?(phpMyAdmin等で確認できます。)

    もしUTF-8になっているのなら別の問題と思われるため新トピックを立て直してください。

    Cool Big Boy

    (@cool-big-boy)

    私はこのページを見つけ
    http://www.tedoyo.com/blog/wordpress-4-1-2%E3%81%AE%E3%83%90%E3%82%B0%E3%81%A3%E3%81%A6%E3%81%A9%EF%BD%9E%E3%82%88/
    ロールダウンしました。
    応急処置にはなります。

    モデレーター Daisuke Takahashi

    (@extendwings)

    DBの文字コードを変えるのであれば、

    • pMAでSQLクエリを打つ
    1. WordPressでデータをエクスポート
    2. DBをUTFで再作成
    3. WordPressをセットアップ
    4. 1のデータをインポート

    のどちらかが楽なのかなー

    kjmtsh

    (@kjmtsh)

    どこに投稿すればいいのかわからないので、とりあえず、ここに投げます。

    状況をある程度再現することができました。古い MySQL は用意できなかったので、試したバージョンは 5.6.21 です。

    1. WordPress 4.1.1 の場合

    文字コードを ujis、collation は ujis_japanese_ci でデータベースを作り、wp-config.php の DB_CHARSET は、

    define('DB_CHARSET', 'ujis');

    としてインストールします (ここで、utf8 にすると、WordPress が CHARSET を変えてしまうので、再現できません)。これで全てのテーブルが、文字コードは ujis、collation は ujis_japanese_ci として作成されます。インストール自体は完全ではなくて、入力データの日本語文字列が全て削除された状態で保存されていますが、動作はします。

    この状態では、クライアントからサーバに ujis を使ってアクセスしようとするので、WordPress から日本語をデータベースに送れません。そこで、あらためて、

    define('DB_CHARSET', 'utf8');

    としてログインしなおすと、日本語を保存することができるようになります。4.1.1 で正常に見えたサイトは、この状態になっている可能性が高いです。問題なく運用ができます。

    ここから、4.1.2 または、4.2 へアップグレードすると、下の状態になります。

    2. WordPress 4.1.1 から 4.1.2 または 4.2 へのアップグレードした場合

    すでに保存されているデータは正常に表示できますが、新規作成の画面は「エディタが表示されない」やボタンが「レビュー待ちとして送信」などの状態になります。実質、新規投稿ができません。

    また、既存の投稿を更新すると、日本語文字列はすべて ???? となり、そのままの状態でデータベースに保存されます。これは不可逆な変更なので、破壊されたデータを復旧する手段がなくなります。

    ユーザのデータが破壊されるという、ちょっとまずい不具合なので、データベースの文字コードが ujis の場合 (つまり EUC-JP です)、あるいは、ujis のテーブルを含む場合で、4.2 にアップグレードした場合は、下の変更が有効かどうか試してもらえますか?

    なお、この CHARSET というのは、wp-config.php の DB_CHARSET で指定しているものではありません。データベース、テーブル、カラムの CHARSET を確認してください。

    CHARSET=ujis, COLLATE=ujis_japanese_ci

    のようなものが見える場合は、該当します。条件を整理すると、

    1. MySQL サーバ (データベースではありません) のサーバ側文字セットが utf8 である。
    2. データベースが ujis である。あるいは、ujis のテーブル、カラムを含む。
    3. wp-config.php で、DB_CHARSET に utf8 を指定している。

    今時の MySQL なら、サーバ側文字セットが ujis ということはほとんどないと思いますが、一応確認してください。万が一、ujis なら、wp-config.php の DB_CHARSET は、ujis に設定されているはずです。その場合は、また別のことを考える必要があります。

    wp-db.php の変更点。2479行目を下のように変更します。一応前後の行をつけておきます。

    foreach ( $data as &$value ) {
       $charset = $this->charset; // ここを書き換える
    
       // Column isn't a string, or is latin1, which will will happily store anythin

    運がよければ、これで日本語が通るようになるかもしれません。

    また、4.2 で、wp-db.php を 4.1.1 のものと差し替えると直ったという報告もありますが、4.2 では、wp-db.php で新設された関数を、別のファイルが使っているので、別のエラーを誘発します。関連のあるファイルは以下の通りです (GNU GLOBAL を使って調べましたが、漏れがあるかもしれません)。

    strip_invalid_text_for_column() 関数を使っているファイル
     -> wp-admin/includes/post.php
     -> wp-includes/comment.php
     -> wp-includes/formatting.php
    
    get_col_charset() 関数を使っているファイル
     -> wp-includes/post.php

    これらを同時に入れ替えれば動作するかもしれませんが、未検証です。不具合の特定が難しくなるので、一部を入れ替えるのはあまりお勧めではありません。

15件の返信を表示中 - 1 - 15件目 (全32件中)
  • トピック「4.1.2 へアップデート後、投稿記事の公開ができない」には新たに返信することはできません。