サポート » プラグイン » サーバを移転したらTrast formにエラーがでてしまった

  • 解決済 ummo3

    (@ummo3)


    書き込みさせていただきます。
    サイトをまるごと別サーバーへ引越ししました。
    ※ドメインも変わりました。

    しかし、他のページなどは問題ないのですが
    プラグインのTrastFormだけエラーがでて使えなくなってしまいました。

    プラグインは有効になっています。
    エラーは下記のようなメッセージが出ています。
    Fatal error: Call-time pass-by-reference has been removed; If you would like to pass argument by reference, modify the declaration of do_meta_boxes(). in /public_html/wp-content/plugins/trust-form/admin/make-form.php on line 21

    何か考えられることはありますでしょうか。
    よろしくお願いします。

12件の返信を表示中 - 1 - 12件目 (全12件中)
  • ummo3さん、こんにちは。

    エラー内容からお答えするわけではないのですが、
    少し思い当たる点があったのでコメントさせて頂きます。

    DB移設時、DB内のドメインを書き換えたと思います。
    その際、wp_options や wp_postmeta のなかのシリアライズされたデータが書き換えられていないのではないでしょうか。
    以前にシリアライズの書き換えが出来ていないと、
    動かなくなるプラグインがでてくると助言を頂いたことがありましたので。。
    ※Image Widget や Trust Form

    コマンドが使えるサーバだと下記サイトが参考になると思います。
    http://dogmap.jp/2012/09/20/wordpress-replace-siteurl/

    もしコマンドが使いないサーバはこちらが参考になるのではと思います。
    http://webcre-archive.com/2012/10/04/wordpress-db-url-replace/

    トピック投稿者 ummo3

    (@ummo3)

    ryu263様 回答ありがとうございます。

    早速、教えていただいた方法(「もしコマンドが使いないサーバ」の方)で
    試してみました。
    しかし他のページは正常に書き換えられたのですが
    Trust Formだけ同じエラーがでてしまいました…
    その他、何か考えられることはないでしょうか?

    それか、また一から設置し直してみようかとも思い、
    一度削除して、再度インストールも試したいのですが
    ダッシュボードのプラグインから削除しようとすると
    FTP情報を入力する項目が表示されましたが
    FTPしか選べず、ここから削除することができませんでした。
    ※サーバーはSFTPです。

    サーバから直接プラグインフォルダを削除しても
    恐らくデータベースにデータが残ってしまいます。
    ※実はその状態で新しいTrust Formをダウンロードして
    サーバにアップロードして有効化してみました。
    するとデータが残っていました。

    すべてクリーンにするには、何か方法はありますでしょうか。
    よろしくお願いいたします。

    トピック投稿者 ummo3

    (@ummo3)

    何度もすみません。
    エラーの出たmake-form.php on line 21の記述は
    do_meta_boxes( ‘trustform’, ‘advanced’, &$this );
    でした。

    前後は下記のようになっています。
    <?php
    add_meta_box( ‘standard-form’, __( ‘Standard Field’, TRUST_FORM_DOMAIN ), ‘trustform_standard_form_meta_box’, ‘trustform’, ‘advanced’, ‘core’ );
    add_meta_box( ‘advanced-form’, __( ‘Advanced Field’, TRUST_FORM_DOMAIN ), ‘trustform_advanced_form_meta_box’, ‘trustform’, ‘advanced’, ‘core’ );

    do_meta_boxes( ‘trustform’, ‘advanced’, &$this );
    wp_nonce_field( ‘meta-box-order’, ‘meta-box-order-nonce’, false );
    wp_nonce_field( ‘closedpostboxes’, ‘closedpostboxesnonce’, false );

    function trustform_standard_form_meta_box() {

    ?>
    もし何か考えられることがあればよろしければアドバイスお願いします!

    ummo3さん、こんにちは。
     
    ドメイン書き換えですが手順は下記でされてますか?
     
    1) 一度DB内をすべて削除(念のため削除前にバックアップ)
    2) 正常なDBをインポート
    3) 「もしコマンドが使えないサーバ」の方を実行
     
    最近の私の経験ですが、
    「もしコマンドが使えないサーバ」の場合、
    サーバ移設前にエラーが出ていなければ、
    本番環境でもエラーは出ていないですね。
     
    一度データベース内検索で、
    旧ドメインが残っていないか確認してみるのもいいかと思います。
     
    作業手順があっていて、DB内に旧ドメインが残っていないようでしたら、
    ドメイン関連ではなく他の原因かもしれませんね。。

    トピック投稿者 ummo3

    (@ummo3)

    ryu263様 回答ありがとうございます!
    お礼が遅くなってしまい申し訳ありません。

    一度すべて削除し、改めて
    1) 一度DB内をすべて削除(念のため削除前にバックアップ)
    2) 正常なDBをインポート
    3) 「もしコマンドが使えないサーバ」の方を実行
    を実行しましたが、Trast formにエラーが出てしまいました。

    >作業手順があっていて、DB内に旧ドメインが残っていないようでしたら、
    >ドメイン関連ではなく他の原因かもしれませんね。。

    上記を聞いて、もしかしたらサーバが怪しいかもしれません。
    Trast FormなどWordpressのプラグインで作られているフォームの
    動作環境は、どこで確認すれば良いかご存知でしょうか?
    下記アドレスをみてみましたが、見当たらないので。。
    http://wordpress.org/extend/plugins/trust-form/

    何度もしつこく聞いて申し訳ありません。
    よろしければアドバイスお願いします。

    ummo3さん

    プラグインのサイトに、
    Requires: 3.3 or higher
    Compatible up to: 3.4.2
    と書かれてあるので、
    使用されているWordPressのバージョン(3.4.2)には問題はないのですが、
    PHPやMySQLのバージョンを確認してみてはどうでしょうか。

    トピック投稿者 ummo3

    (@ummo3)

    ryu263様 回答ありがとうございます。

    サーバを確認すると、下記のようになっていました。
    PHP/5.4.6
    Apache/2.4.3
    libmysql – mysqlnd 5.0.10

    アドバイス頂いた下記ですと、
    PHPやMySQLのバージョンはいくつという
    意味なのでしょうか…?
    Requires: 3.3 or higher
    Compatible up to: 3.4.2

    聞いてばかりで申し訳ありません。
    よろしくお願いします。

    ummo3さん
     
    MySQLが 5.0.10 とのことですが、
    サーバ要件には、
    WordPress3.2系の場合、MySQLは 5.0.15 以上と書いてあるので、
    一度 XAMPP や MAMP など、
    サーバ要件を満たしている環境で、
    検証してみてはどうでしょうか?

    トピック投稿者 ummo3

    (@ummo3)

    ryu263様 回答ありがとうございます。

    アドバイスいただいたように、色々とサーバ環境を確認していたのですが
    納期が迫ってしまい、結局Trast Formをあきらめることに致しました…
    そのため、ここで解決表示にさせていただきます。

    ここまで相談にのってくださって
    本当にありがとうございました!

    モデレーター のむらけい (Kei Nomura)

    (@mypacecreator)

    スレッドは解決済みになっていますが、たまたま原因がわかったので書きます。

    この件の原因は、

    ・PHPが5.4であること
    ・プラグイン内での、変数の書き方がPHP5.4でひっかかっていること

    でした。

    Fatal error: Call-time pass-by-reference has been removed; If you would like to pass argument by reference, modify the declaration of do_meta_boxes(). in /public_html/wp-content/plugins/trust-form/admin/make-form.php on line 21

    のエラーメッセージ内の「Call-time pass-by-reference has been removed」の部分が、PHP5.4の場合にのみ発生するものです。

    参考ページ PHP: リファレンス渡し – Manual

    このページには以下のようなに書かれています。

    以前のバージョンの PHP では foo(&$a); のような形式で & を利用すると “Call-time pass-by-reference” という警告が発生していましたが、 PHP 5.3.0 以降では警告は発生しません。 また、PHP 5.4.0 以降では call-time pass-by-reference 機能自体が削除されたので、 これを使おうとすると fatal エラーが発生します。

    つまり、プラグインのエラーが出ている箇所の記述
    do_meta_boxes( 'trustform', 'advanced', &$this );

    の、&$this の形式が、PHP5.4環境下でのエラーの原因と考えられます。

    取り急ぎ、&$this → $thisに変えて動かしましたが、今後のバージョンでこのあたりが解消されることを、プラグイン作者さんを心から応援しつつ期待して待ちたいと思います!!

    どうもTrust Formの作者です

    現上、こちらのバグについては、Trac上では修正しております。
    http://plugins.trac.wordpress.org/changeset/646681

    1月末くらいには次のバージョンを出せると思うので、そこで修正版がお届けできます。

    現在Trust Formを1.5にバージョンアップしています。
    PHP5.4以降で動かないエラーについては解消しています

12件の返信を表示中 - 1 - 12件目 (全12件中)
  • トピック「サーバを移転したらTrast formにエラーがでてしまった」には新たに返信することはできません。