WordPress 4.1.2 の日本語版が公開される日の朝から、新規投稿、投稿、プラグイン、ウィジェットなどのすべての更新が出来ない。WordPress 4.1.2 の日本語版にアップデートしても全く同じ症状です。
--
[モデレータより]
アップデートに関わる問題なので、「インストール」フォーラムに移動しました。
WordPress 4.1.2 の日本語版が公開される日の朝から、新規投稿、投稿、プラグイン、ウィジェットなどのすべての更新が出来ない。WordPress 4.1.2 の日本語版にアップデートしても全く同じ症状です。
--
[モデレータより]
アップデートに関わる問題なので、「インストール」フォーラムに移動しました。
お使いのWordPressで、
■ もしテーマがデフォルトで無い場合 => テーマをデフォルトにした場合はどうか?
■ もしプラグインを使用している場合 => プラグインをオフにした場合はどうか?
を試してもらえますか。
「問題解決のためのチェックリスト」
https://ja.forums.wordpress.org/topic/11794
もご確認ください。
ありがとうございます。
テーマをデフォルトにし、プラグインをオフにしましたが解決しないので、既存のテーマも再インストールしましたが解決しません。
さらに、テーマを戻し、ウィジェットも元に戻そうとしましたが、更新できないため一部のウィジェット(Newpost Catch最近の投稿 を確認)、一部のプラグイン(All In One SEO Pack を確認)が戻りません。また、既に投稿済みの原稿を一部編集したところ半角文字しか表示されなくなってしまいました。
ありがとうございます。
状況からすると、データベース周りの処理で変になっているような気がします。
WPのアップデートが原因の可能性も十分ありますが、
■ データベースの容量は余裕があるか?
を確認してもらえますか。
ご回答ありがとうございます。
ディスクの使用量(使用率)でよろしいでしょうか?
現在、1.34GB / 100GB (1.34%)です。。
私も4.1.2にしたところまったく同じ症状になりました。記事の編集をしようとするとタイトルとコンテンツが文字化けになり、新しく投稿しようとすると、管理者権限であるにも関わらず「公開」ボタンが「レビューとして送信」になり、投稿ができません。
私も4.1.2で更新した記事のタイトルとコンテンツが文字化けしてしまいました。
公開はできますが、当然文字化けしていて記事の意味をなさないので非公開にせざるを得ません。
英語以外の投稿がエラーになるという問題について、こちらにバグリポートが上がっています。
https://core.trac.wordpress.org/ticket/32051#ticket
修正リリースを待つか、パッチの当て方が分かる場合は上記のスレッドにあるパッチを使ってみてください。また、wp-includes/wp-db.php を古いバージョンのものと入れ替えることでも修正できたというユーザーの声もありました。
(旧バージョンのパッケージは http://ja.wordpress.org/releases/ からダウンロードできます)
ご回答ありがとうございます。
その後も文字化け(?????になる)以外に、編集後に更新されない機能(ウィジェットやプラグイン等)など数々の不具合がありました。
素人なので難しいことはせずに修正リリースを待つことにしますが、最新情報もお待ちしております。
ありがとうございます。
4.2にアップデートしましたが
残念ながら文字化け(日本語は?????????????????←こんな感じ)のままで
以前と変わらないようです。どなたかご教授願いませんでしょうか?
私も4.2にアップデートしたら以下の不具合が発生しました。
不具合
・新規投稿ができない エディター部分が表示されません。
・古い投稿を編集すると、ontenmanさんのように投稿データとタイトルの日本語が「?????」になります。
経緯
・更新ページのアップデートボタンを押しました。
おした時は、「WordPress 4.2–en_US 」のボタンしかなく、それを押してしまいました。
・その後に「WordPress 4.2–ja 」の再更新のボタンが出ていたので、再更新もしたのですが、治らずです。
当面の対処
・phpmyadminで直接見てみると、表示が変な投稿は、DBの「表示」ページでも
変になっていました。そこで、直接、正しい日本語を入れて、更新すると
表示はちゃんと治りました。postする時の文字コードがおかしくなってしまったのかと
思います。
やはり、修正リリースを待ちたいと思います。
その後、プラグインをひとつずつ停止しながら確認しましたが
文字化け、新規投稿、編集更新等は一切解決できませんでした。
また、ウィジェットにある「最新の投稿」も使用できません。
どなたか、解決方法をご存知でしたらご教授願います。
上で解決策を示していただいているとおり、
wp-includes/wp-db.php
このファイルのみを旧バージョン(私は4.1を使いました)で上書きしてなおりました。
プラグインや文字コード等さわらなくて大丈夫です。
FTPソフトで直接このファイルのみを上書きしてください。
まったく同じ症状で、ちょうど12時間苦しんでいました・・・。
上記ragiragiさんの方法を試したのですが、
残念ながら、私の場合はエラーがかえってきてしまい新規投稿できませんでした。
rinpapa様
そうでしたか。
新規投稿ができないケースでは、
wp-includes/post.php
こちらのファイルも上書きすればよいようなのですが。
いかがでしょう。
ragiragi様
ご親切に教えて下さって、本当にありがとうございました!
無事に新規投稿ができました。心から、感謝しています!!
私もロールダウンしてなんとかしのいでいます。
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/
早く最新バージョンで手当てしてほしいです。
たくさんのご教授をいただきありがとうございました。
私の環境は以下の通りです。
PHPのバージョン:5.2
MySQLのバージョン:5.1
サーバのサービス(レンタルサーバ or クラウド等):さくらのレンタルサーバ・スタンダード
データベースの文字コード:UTF-8 Unicode (utf8)
その後、wp-includes/wp-db.phpおよびwp-includes/post.phpの上書きでは画面が真っ白になってしまうだけで解決できませんでした。
結果、Cool Big Boy様の投稿を参考にさせていただき
4.1にダウングレード(ロールダウン)したところ、無事に再開いたしました。
私も今後も4.2での回復を期待しフォーラムの情報をお待ちしております。
ありがとうございました。
4.1.3の修正分(https://core.trac.wordpress.org/ticket/32051)をみると、まだXML周りで修正されてなくて、https://core.trac.wordpress.org/ticket/32090 を見ると、4.2.2(本日出ました)で修正されたように見えます。
これで直っているかは分かりませんが...
私が管理させて頂いているサイトも、ontenman様と同じ症状でした。
4.2.4 に更新してみたところ、
新規投稿、投稿、プラグイン、ウィジェットは問題なくなりましたが、
文字化けは相変わらずです。
また4.2.4 で引き続き、
新規投稿や、投稿の編集時に日本語を入力して「公開」または「更新」ボタンを押しても、投稿画面に日本語が表示されません(日本語はすべて消えます)。
以下の情報も、ontenman様と全く同じです。
バグが修正されたアップグレードのリリースを待っていたのですが、
かなり時間が経過してきて、これ以上更新ができないとそろそろ不都合が出てくるので、
ダウングレードで対処するしかないかなと考えているところです。
@wakuchin さん
現在の WordPress の状況からして、多くの現象は理解できますが、一部不可解なところがありますので、もう少し情報をいただけると助かります。
phpMyAdimn を使う必要があるのですが、扱うことができますか? もし、できるなら、次の3つの情報がほしいです。
1. phpMyAdmin にログインして、SQL のタブをクリックすると、エディタの画面になります。そこに次の文を入力して、「実行」をクリックしてください。
SHOW VARIABLES LIKE 'character%';
出力された行をコピーしてください。
2. 同じく、今度は、下の文を入力して「実行」をクリックしてください。
SHOW VARIABLES LIKE 'collation%';
3. 同じく、今度は、下の文を入力して「実行」してください。「データベース名」のところは、その名前を、wp_posts のところは、wp-config.php で設定した「接頭辞」+posts となります。wp2_ のように設定してある場合は、wp2_posts となります。
SHOW CREATE TABLE データベース名.wp_posts;
出力が省略された形になることがありますので、全文が表示されていない場合は、印刷用画面にしてコピーしてください。必要なのは、最後の行だけですので、接頭辞など気になるようなら、最後の行だけ、お知らせいただいても結構です。
以上、よろしくお願いします。
kjmtsh様
ご助言どうもありがとうございます!!
phpMyAdmin にログインし、SQLのタブで3つの文を実行してみました。
以下、ご報告致します。
1.
SHOW VARIABLES LIKE 'character%';
Variable_name: Value
character_set_client: utf8
character_set_connection: utf8
character_set_database: ujis
character_set_filesystem: binary
character_set_results: utf8
character_set_server: ujis
character_set_system: utf8
character_sets_dir: /usr/local/share/mysql/charsets/
2.
SHOW VARIABLES LIKE 'collation%'
Variable_name: Value
collation_connection: utf8_general_ci
collation_database: ujis_japanese_ci
collation_server: ujis_japanese_ci
3.
SHOW CREATE TABLE データベース名.wp_posts;
Table: Create Table
wf_wp_posts: CREATE TABLEwf_wp_posts
(
ID
bigint(20) unsigned NOT NULL AUTO_INCREMENT,
post_author
bigint(20) unsigned NOT NULL DEFAULT '0',
post_date
datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
post_date_gmt
datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
post_content
longtext NOT NULL,
post_title
text NOT NULL,
post_category
int(4) NOT NULL DEFAULT '0',
post_excerpt
text NOT NULL,
post_status
varchar(20) NOT NULL DEFAULT 'publish',
comment_status
varchar(20) NOT NULL DEFAULT 'open',
ping_status
varchar(20) NOT NULL DEFAULT 'open',
post_password
varchar(20) NOT NULL DEFAULT '',
post_name
varchar(200) NOT NULL DEFAULT '',
to_ping
text NOT NULL,
pinged
text NOT NULL,
post_modified
datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
post_modified_gmt
datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
post_content_filtered
longtext NOT NULL,
post_parent
bigint(20) unsigned NOT NULL DEFAULT '0',
guid
varchar(255) NOT NULL DEFAULT '',
menu_order
int(11) NOT NULL DEFAULT '0',
post_type
varchar(20) NOT NULL DEFAULT 'post',
post_mime_type
varchar(100) NOT NULL DEFAULT '',
comment_count
bigint(20) NOT NULL DEFAULT '0',
PRIMARY KEY (ID
),
KEYtype_status_date
(post_type
,post_status
,post_date
,ID
),
KEYpost_parent
(post_parent
),
KEYpost_author
(post_author
),
KEYpost_name
(post_name
(191))
) ENGINE=MyISAM AUTO_INCREMENT=19605 DEFAULT CHARSET=ujis
どうぞよろしくお願い致します。
@wakuchin さん
ありがとうございます。ほぼ予想どおりの結果ですが、たいへん重要な情報を得ることができました。
利用者が多い「さくら」がこの状況だとすると、わけのわからない不具合に遭遇している方がほかにも大勢いらっしゃるかもしれません。さっさとインストールし直してしまった方は問題がなくなりますが (たぶんです、必ずそうなるとは断言できません)、データベースのエクスポート・インポートで作り直すと、同じ状況を再現するだけになってしまいます。また、不具合にあっている方は、比較的古くから WordPress を使っているはずなので、より多くの投稿を抱えているはずですから、そう簡単に現在のサイトを作り直すわけにはいかない方も多いと思います。
検索してくる人の便も考えて、現在の状況をできるだけ説明しておきます。技術的なことが知りたい場合は、ticket をご覧ください (ここでは述べません)。なお、以下は私の個人的な見解であって、WordPress.org および ja.WordPress.org の公式見解ではありません。内部コードの読解は間違っていないと思いますが、保証はありません。結果について責任を負うこともできません。ご承知おき願います。
1. WordPress の状況
4.1.2 から最新の WordPress までの全バージョンで、MySQL のテーブルで使われている文字集合が、utf8、utf8mb3、utf8mb4、ascii、latin1 でない場合、サーバとのやり取りにテーブルの文字セットを使ってしまうという致命的なバグを含んでいます。途中のバージョンからは修正が入ったのですが、前のバグが直らず、もう一つ、サーバが32ビットシステムの場合、投稿本文とコメント本文、および、postmeta、usermeta などのテーブルの meta_value カラムに入力されるデータが0バイトになるという、こちらも致命的なバグを含むようになりました。
「さくら」はたぶん、32ビット FreeBSD なので、更新の結果が反映されないのは後者のバグのためです。
最初の修正を見ると、バグリポートの「意味」が伝わらなかったのかもしれません。状況がわかって、書き込みをするたびにデータベースに保存されたデータが破壊されることがわかったので、これはマズイと思い、急いだせいもあって、うまく文章を作れませんでした。再度バグリポートを出しましたが、まだ修正はありません。また、「意味」が伝わらないかもしれません。不具合であることは理解できていると思いますので、次回のリリースで何らかの修正が入るはずですが、「意味」が伝わらない場合、またやり直しになる可能性もあります。
2. wakuchin さんの状況
MySQL のテーブルは、ujis (EUC-JP) で作られています。調べたのは、wp_posts テーブルだけですが、他のテーブルも同じでしょう。しかし、WordPress と MySQL との通信には utf8 が使われています。wakuchin さんが MySQL は utf8 だと思ったのは、たぶん、wp-config.php の DB_CHARSET の値が utf8 になっているからだと思いますが、これはテーブルの文字集合ではありません。照合順序 (collation) は、WordPress 内部では、ujis_japanese_ci として扱われているはずです。
この状態だと、WordPress は、DB_CHARSET の値を無視して、ujis で強引に MySQL と通信します。かろうじて、ascii、つまり、英語のアルファベットだけでできているデータは同じ1バイトなので、入力できますが、日本語を含む UTF-8 の3バイトデータは全滅です。WordPress は、ログインしたとたんに、データベースへの書き込みが発生しますが、そのほとんどが ascii でできているので、新規投稿などのページ以外は正常に見えます。新規投稿のページでは、日本語のデータが通信に入るので、ここでユーザが異常に気付きます。
現在の不具合は、すでにデータベースに入力されている日本語には及びませんので、強引なことをしなければ、これまでの投稿などは破損していないはずです。フロントエンドでの表示などに不具合がないのは、データベースからの読み出しのときは、問題のある関数をデータが通らないからです。
3. 対応方法
PHP のバージョンが 5.2.x (「さくら」のサイトでは最後の番号が確認できませんでした) とのことですから、ちょっと気になっています。本来なら、オプションで変更できる 5.3 以上にしてくださいというところなのですが、複数の変更を同時に入れると、それ以降の不具合の特定が難しくなるので、今回に限り、PHP はそのままで、お願いします。うまくいかないときに、試してもらうかもしれません。
また、データベースを utf8 に移行することも、現時点では、保留させてください。失敗すると、これまでの投稿データが破損しますので、あまりうかつなことが言えないのです。最低限、テーブルの構造や投稿データが何バイト入っているかなどの情報を調べてからでないと、アドバイスができません。しかし、将来的には、いつか移行が必要になることは確かだと思います。移行のための手引きを準備することくらいのことはできるかもしれませんが。
さて、具体的な対処方法ですが、現状では、ファイルの一部を書き換える以外に方法がありません。変更するファイルは1つです。
$queries[ $value['charset'] ][ $col ] = $this->prepare( "CONVERT( LEFT( CONVERT( %s USING binary ), %d ) USING {$value['charset']} )", $value['value'], $value['length']['length'] );
を
$queries[ $value['charset'] ][ $col ] = $this->prepare( "CONVERT( LEFT( CONVERT( %s USING binary ), %f ) USING {$this->charset} )", $value['value'], $value['length']['length'] );
に書き換える (2か所です)。同じく、2701行目からの、
if ( $charset !== $connection_charset ) {
$connection_charset = $charset;
$this->set_charset( $this->dbh, $charset );
}
の4行をコメントアウトするか、削除する。
修正をするときには、使うエディタに注意してください。WordPress をインストールするときに、wp-config.php を編集したエディタなら、問題ありません。
実際のサーバを使っているわけではないので、他に不具合があるかもしれません。結果をお知らせいただけると助かります。要するに、人柱になってね、というお願いです。
kjmtsh様
さくらのスタンダードを使っており、WP4.2.2に更新後新規投稿ができず、過去記事の一部が壊れ、記事のリビジョンから復元もできずという状態でkjmtsh様の方法を試してみましたが、画面が白くなるだけで効果がありませんでした。取り急ぎCool Big Boyさんのやりかたでダウングレードしてしのいでおります。
取り急ぎ情報まで。
ご報告、ありがとうございます。
古い版を使うのは、セキュリティ・ホールがあるので、お勧めではありませんが、強制はできません。できれば、コメントを受け付けないようにしていた方がよろしいと思います。
画面が白くなるのは、PHP の構文エラーなので、コードの書き間違いです。こちらからはどこを書き間違えているか知ることができません。編集をするなら、落ち着いて、慎重に作業してください。全角文字を使ったり、綴りを間違えたり、カッコや引用符の対応が間違えたりしただけでも動作しなくなります。また、Windows の場合は、メモ帳やワードプロセッサを使わないようにお願いします。
読みにくいかもしれないので、編集後、こうなっていてほしい形を、行を折り返して再掲します。書き換える場所は、%d
を %f
に、$value['charset']
を $this->charset
に書き換えです。
$queries[ $value['charset'] ][ $col ] =
$this->prepare( "CONVERT( LEFT( CONVERT( %s USING binary ), %f )
USING {$this->charset} )", $value['value'], $value['length']['length'] );
コメントアウト部分は、各行頭に二つのスラッシュをいれます。
//if ( $charset !== $connection_charset ) {
// $connection_charset = $charset;
// $this->set_charset( $this->dbh, $charset );
//}
kjmtsh様
引き続きご助言頂きまして、どうもありがとうございます!!
PHPとMySQLのバージョンが古い件、
私も気になっていたのですが、今回は更に複雑な事態を招きそうでしたので、そのままにしております。
ご提案いただきました、wp-db.php の書き換えと、上書きを行いました。
その結果、日本語の入力と表示について、
新規投稿、既存投稿の編集ともに、全く問題がなくなりました!!!
今回のWordPress の一連の不具合について、kjmtsh様のご見解通りだと思われます。
この線で、WordPress の修正版がリリースされますように。
取り急ぎ、お礼とご報告をさせていただきます。
なお、この件が一件落着しましたら、
PHP と MySQL のバージョンアップを行いたいと思います。
その節はまたアドバイス頂けましたら幸いです。
どうぞよろしくお願い致します!
ログイン しなければ投稿できません。