サポート » プラグイン » Flexible Upload を使用するとエラー

  • 解決済 wolfs

    (@wolfs)


    こんにちは
    Flexible Uploadでの画像アップロードで皆様にお伺いしたいと思います。

    こちらWP2.5日本語版+WP Multibyte Patch1.0でFlexible Upload 1.13を使用しています。
    画像のアップロードの設定で「タイトル」に2バイト文字が含まれていると
    Fatal error: Maximum execution time of 30 seconds exceeded in /DocumentRoot/blog/wordpress/wp-includes/wp-db.php on line 178
    のようにエラーが発生します。
    ※ エラーは発生しても画像自体のアップロードは完了していてuploadsフォルダに存在します。

    試しにタイトルを色々変えて実験した結果、2バイト文字を含まないタイトルのみアップが成功します

    自分で修正しようと思いタイトルの獲得を行っているflexible-upload-wp25.phpの133行目
    $title = $_POST[‘post_title’][$key];

    $title = htmlspecialchars(trim($_POST[‘post_title’]));
    に変更して試してみたのですがうまくいかず・・・

    どのようにしたらこれを回避できるでしょうか?

15件の返信を表示中 - 1 - 15件目 (全19件中)
  • こんにちは、

    Flexible Upload1.13+MultiBytePatch1.0+WP2.5Jaで試してみました。
    (何度も編集すみません)
    これ以外のプラグインは一切使用していない状態+FlexibleUploadは初期状態です

    問題なくタイトルに2バイト文字を使用してのアップロードが出来ました。

    max_execution_timeの処理時間内に処理が出来なかったというように見えるので、
    php.iniが編集できるならmax_execution_timeを増やしてみてはいかがでしょうか?

    また、Flexible Uploadの作者は日本語に精通しているようなので、以下で聞いたほうがいいかも知れません。(フォーラム自体は英語ですが。。)

    Forum

    momo-i様ありがとうございます。

    max_execution_timeの値の変更も試してみたのですが、値を大きくすればするほどエラーが出るまでの待ち時間が長くなるだけで変化はありませんでした。

    他のプラグインの問題かと思いmomo-i様と同じように
    新規インストールで、WP2.5日本語版+MultiBytePatch1.0+Flexible Upload1.13でテストしましたが、やはりタイトルに2バイト文字があるとエラーが発生します。

    何か環境の問題なのでしょうか
    ME2.2.3を使っていたときはこんな症状はなかったのですが・・

    .
    フォーラムのご案内ありがとうございます。
    フォーラムの記事を少し覗いてみようかと思います

    FlexibleUploadを停止してタイトルに2バイト文字を入れても同じエラーになりますでしょうか?
    (WP自体使い始めて2ヶ月の初心者なので適切なアドバイスが出来ずすみません)

    データベースやPHPのバージョンやデータベースのdefault-character-set等を書いていただくと幸せになれるかもしれません。(他の方からもアドバイスがあるかも知れません)
    うちでは Mysql-5.0.51a+UTF8 PHP5.2.5でUpload時のMysql側のログですが、こんな感じになってます。
    INSERT INTO wp_posts (~略~) VALUES (‘1′,’2008-04-17 08:31:03′,’2008-04-16 23:31:03′,’テスト’,”,’テスト’,”,’inherit’,’attachment’,’open’,’open’,”,’%e3%83%86%e3%82%b9%e3%83%88′,”,”,’2008-04-17 08:31:03′,’2008-04-16 23:31:03′,’-1208388597′,’0′,’image/jpeg’,’http://example.com/wp-content/uploads/xxxx.jpg’)

    momo-i様ありがとうございます。

    Flexible Uploadを停止すると問題なくアップする事が出来ます。

    現在少し弄って判明した点が1つあります。

    画像をアップする時に半角英数でタイトルをつけてアップし
    アップ完了後のギャラリーからタイトルを指定すると日本語で保存されます。
    やはりFlexible Uploadから書き込むときに問題が起きているように思えますが・・・
    なぜこうなるのか・・

    えと、こちらの使用環境ですが、MySQL5.1.1、PHP5.2.5です。
    default-character-setはUTF8です。

    SQLのログの方ですが、長いのでWebサイトの方にアップしました。
    http://www.eonet.ne.jp/~reima/update.txt

    よろしくお願いします。

    5.0.37-community-nt-logとあるので、Windows版の5.0.37が動いてると思います。
    うちでは
    /*!\C utf8 *//*!*/;
    SET @@session.character_set_client=33,@@session.collation_connection=33,@@session.collation_server=33/*!*/;

    拝見したログでは
    /*!\C latin1 *//*!*/;
    SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=33/*!*/;

    となっているので、Latin1なのにUTF8な物をdbに書き込もうとしてるので何か起きてるのかなぁと思ったりします。
    (Mysqlもそんなには詳しくないのでお力になれずすみません)
    wp-config.phpに書かれてるmysqlにログインをしてCLIで
    SELECT @@version;
    SHOW GLOBAL VARIABLES LIKE ‘character\_set\_%’;
    SHOW SESSION VARIABLES LIKE ‘character\_set\_%’;
    と打って見るとバージョンや文字コードの情報が確実に分かります。

    momo-i様ありがとうございます。

    MySQLにログインし文を打って見ました。
    結果の方は、character_set_filesystem = binary 以外は全てutf8となっておりました
    出力したログです http://www.eonet.ne.jp/~reima/sql.txt

    UTF8なようですが・・・
    Flexible Uploadからの出力がLatin1になっていると言うことでしょうか。

    ふむふむ。
    後はバイナリログではなくクエリログを取ってみてエラー時のクエリと成功時のクエリを比較してみるといったところでしょうか。
    mysqldの起動オプションに –log=(ログファイル名) でコネクションとクエリログの取得ができ、–log-error=(ファイル名)でエラーログがそれぞれテキストファイルで取得できます。

    明日にでも手が空いてたらWindows版で同じバージョンのものをちょっと構築してみますね。
    (その間にほかの方から解決策が出ていることを願っています^^)

    momo-i様ありがとうございます。

    起動パラメータにlogを追加して2バイト文字を含めて画像をアップしてみました
    http://www.eonet.ne.jp/~reima/log.txt

    やはりmomo-i様のようなログは出力されていませんでした・・
    やはり途中で止まってしまっているようです

    お手数をお掛けしますです。

    クエリログを見る限りデータベースを明示的にUTF-8にセットされてないですね。
    これくらいしか違いが無いように見えますね。
    と書いていて確認したらwp-db.phpの88行目にDB_CHARSETでSET NAMESしてますね。
    wp-config.phpに
    define(‘DB_CHARSET’, ‘utf8’);
    が定義されてるかご確認ください。
    (と更に書きつつ上記を消して確認しても問題なく動作しました。。)

    参考までに、Uploadを押した時点でのmysqlのログです。
    http://www.momo-i.org/tmp/mysql.txt

    後は先の通り、手が空けばWindowsマシンに同じような環境を作って確認してみます。
    追記:
    Mysqlのコミュニティサーバが5.0.45か5.0.51aしかないようなので、5.0.51aで試します。

    Windowsで試してみました。
    IE6ではアップロードは可能でしたが、アップロード後の表示がJavascriptのエラーでうまくいってないような感じですね。(Windows版Linux版共に)
    参考までに、こちらはWindwos版でUploadした際のログです。
    http://www.momo-i.org/tmp/mysql2.txt

    もし可能であれば、Mysqlを最新のSTABLEにしてみてはいかがでしょう?

    (後、ブラウザをFirefoxやOperaで動作させてみるとか?)

    (追記)
    バイナリログ(mysqlbinlogでテキストとして見れるようにしてあります)
    http://www.momo-i.org/tmp/mysql3.txt

    こんにちは
     momo-i様、時間を割いて下さりありがとうございます。

    .

    今朝方、DBのバックアップを取っているときに気付いたのですが、
    mysqldumpで出力されるデータはDBがUTF8なら中の文字もUTF8のはずと思い、メモ帳で開いてみたのですが、
    日本語が含まれている所は全て化けていました。

    ですので、
    mysqldumpに–default-character-set=latin1のパラメータをつけてバックアップしてみたところ、日本語部分の文字化けはなくなりました。
    あとはsqlファイルの文字コードをutf8に変換し、内部のlatin1と書かれている部分をutf8と書き換えてwordpress_utf8へリストアしました。

    最初にmomo-i様が言われたとおり、なにやらlatin1で無理矢理書き込みがされていたようです

    .
    その後、フォーラムを見まして・・・
    wp-config.phpを確認してみたところ
    define(‘DB_CHARSET’, ‘utf8’);
    は定義されていませんでした。

    ですので、
    define(‘DB_CHARSET’, ‘utf8’);
    の行を追加し再度2バイト文字のタイトルにしてアップしてみましたが、やはり同様のエラーが発生します
     今回のログです http://www.eonet.ne.jp/~reima/log2.txt

    何が問題なのでしょうか

    Windows版の5.0.37が手に入ったので、検証してみました。
    こちらも特に問題は見られませんでした。
    ちなみに私の環境ではアップロード時には2回に分けてログが出てきています。

    推測で申し訳ないのですが、恐らくMysqlのインストール又は設定にやはり問題があるのではないかと思います。

    (以下のリンクは全て先頭のhを抜いていますのでコピー&ペーストで先頭にhをつけてください。)

    私がためした各アプリケーションのインストールは以下を参考にしています。
    ttp://www.twoness.co.jp/php_lec/html/install.html
    (ただし、バージョンは全て最新のものを使用+SJISはUTF-8に置き換え)

    もし検証用のマシンなどご用意できるのであれば、上記URLを元にサーバ類を1からインストールして、順に今の設定に合わせて確認をすると切り分けがつくかもしれません。

    また、latin1とUTF-8の関係についても調べてみましたが、どうやらMysqlがlatin1でも正しくUTF-8が扱えるために気づかずにおかしなことが起きている可能性もありそうです。
    ちょっと古い参考で文字化け関連の資料なのですが
    ttp://wota.jp/ac/?date=20061011
    ttp://sb.xrea.com/archive/index.php/t-11775.html

    WordPress関連でのlatin1とUTF-8
    ttp://www.saitoudaitoku.com/wordpress/?p=472
    ttp://www.sssg.org/public/index.php?MySQL%CA%B8%BB%FA%A5%B3%A1%BC%A5%C9%A4%CE%B0%DC%B9%D4

    最後の資料を見る限り、Wolfsさんの事象と似ているかなぁと思います。
    (MysqlはUTF-8でもDB自体が実はlatin1だったということ?)

    momo-i様ありがとうございます。

    テスト環境を構築しテストしてみました。
     Windows2000、MySQL5.1.1、PHP5.2.5、WP2.5日本語版

    インストールマニュアル通りにMySQLをセットアップし、今までのWPのデータベースをリストアして再度実験しましたが、やはりエラーが発生します。
    DB名:wordpress_utf8

    MySQLが新しくなったと言うことで、WPも試しに新規インストールしテストしてみたところ
    タイトルに2バイト文字を含めてもエラーは発生しませんでした。
    DB名:wordpress_test

    そしてその新規インストールしたWPのwp-config.phpをwordpress_testからwordpress_utf8に書き換えて使用するDBを変更しました。
     define(‘DB_NAME’, ‘wordpress_utf8’);

    新規記事の投稿内容もDBにはちゃんとUTF8で記録されていました。
    ですが、wordpress_utf8の方に切り替えるとFlexible Uploadのタイトルに2バイト文字を含めるとエラーが発生。
    有効プラグインは、WP Multibyte Patch1.0、Flexible Upload1.13、Akismet2.14

    .
    ふと思ったのですが、このwordpress_utf8 DBはWP2.2.3MEからのデータなのですがそれが問題なのでしょうか
    DBの文字コード周りはもう大丈夫だと思うのですが・・・

    完全な新規であれば問題が発生していないということと、WP2.2.3MEからのデータということでしたら、おそらく先の返信の中にある最後のsssgさんの記事が有用かもしれませんね~
    アプリケーションというよりはそこの中身があやしいというところまでこぎつけられたので、若干切り口が開けそうです。

    ただ、私が初めて触ったのがWP2.3.3なのでMEとかご存じの方にWP2.5までのアップグレード方法をご指導いただいたほうがいいのかもしれません。
    検索をするとまさにWolfsさんと同じ環境(WP2.2.3ME->WP2.5)の方の記事がありましたので、ご参考までに。
    ttp://www.mokkun.com/2008/04/wordpress223me-25.html

    モデレーター IKEDA Yuriko

    (@lilyfan)

    本題と違った話ですみません。一番最後のリンクが「ttp」になっていたので、ペースト失敗かと思ったのですが、

    (以下のリンクは全て先頭のhを抜いていますのでコピー&ペーストで先頭にhをつけてください。)

    ということだったのですね。意図が全く不明なのですが、ユーザビリティーが落ちるので、通常のリンクにしてもらえると助かります。「ttp」というリンクは見た目がかっこわるいですし。

    インターネットは、ハイパーリンクが容易であることが基本要素ですから、わざわざ URL をコピーして h を補完して閲覧しなければならない、というのは面倒すぎます。閲覧環境によっては、URL をいじれない場合もあります (携帯電話とか読み上げブラウザーとか)。

    このフォーラムは、多くの人が使いやすい形で情報が集まるべし、と思っていますので、よろしくお願いします。

    あ、http のリンクをたくさん入れるとスパム判定されたりするでしょうか?? それの回避だとしても「ttp」という表記はダサいので、他の表記を考えてもらえるとうれしいです。(わたしは HTTP:// という表記をよく使っています)

15件の返信を表示中 - 1 - 15件目 (全19件中)
  • トピック「Flexible Upload を使用するとエラー」には新たに返信することはできません。