解決済み
Question

デザインプリセットのダウンロードを行うと、エラーが発生します。

  • k ken.oo.0805
  • お世話になります。

    デザインプリセットのダウンロードを行うと、以下のエラーが発生します。

    PHP Warning: foreach() argument must be of type array|object, null given in <<インストール先パス>>\wp-content\themes\jinr\include\customizer\controls\core\class-jinr-demo-import-control.php on line 15

    「foreach ($arrayMods as $key => $value) {」この行でエラーとなっているようです。

    対処方法がありましたら、ご教示頂けますと幸いです。

    ■実行環境(自身のノートPCに環境を構築しています)
    Windows 11 Pro 64bit / IIS 10
    PHP 8.1.13 (64bit NTS)
    JIN:Rバージョン 1.0.5(1.0.2~1.0.4でもエラーは発生しました)
    (公式子テーマを利用中)

    ■試したこと
    ・すべてのプラグインを停止して、デザインプリセット02のダウンロードを実施
    ・02以外のデザインプリセットについても同様のエラーが発生


    なお、以下の質問も確認し、allow_url_include=on にしてみましたが、状況に変わりはありません。

    https://jinr-forum.jp/jinr-question/%e3%83%87%e3%82%b6%e3%82%a4%e3%83%b3%e3%83%97%e3%83%aa%e3%82%bb%e3%83%83%e3%83%88%e3%81%ae%e3%83%80%e3%82%a6%e3%83%b3%e3%83%ad%e3%83%bc%e3%83%89%e3%81%8c%e5%87%ba%e6%9d%a5%e3%81%be%e3%81%9b%e3%82%93/


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

    • WP 6.1系
    • PHP 8.1
    • JIN:R 1.0.5
    • その他(トピック内容に記載してください。)
    • GoogleChrome
    • Windows11
    2023/01/29 18:17
  • Ryota0101

    こんにちは!
    JIN:R制作チームのRyotaです。

    エラーコードの共有助かります!
    おそらくですが、デモプリセットを反映させるために必要なファイルを参照することができなくなっていますね。

    かなり高度な検証と修正が必要そうなので、もし可能であれば個別にやり取りしませんか?
    僕がken.oo.0805さんのWordPressにログインさせていただき、問題の確認・検証、その後解決策を提示させていただければと思っています。

    JIN:Rのコミュニティ(Slack)か僕のTwitterでも大丈夫なので、ご検討いただければ嬉しいです。
    ご不便おかけし大変恐縮ではございますが、何卒宜しくお願い致します。

    2023/01/29 18:49
  • k
    ken.oo.0805

    回答ありがとうございます。
    返信が遅くなり、申し訳ありません。

    Slackのコミュニティに参加し、ダイレクトメッセージを送りました。
    お手すきの時にご確認ください。

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

    2023/01/31 23:33
  • Ryota0101

    ご連絡ありがとうございます!
    お返事させていただきましたのでまたご確認ください!

    このトピックは一旦そのままでお願いしたいです。

    2023/02/02 12:05
  • k
    ken.oo.0805

    本件、解決しました。

    Windows で PHP を利用する場合に発生するようです。
    問題の発生個所が、PHP 本体であるため、IIS、nginx、Apache など、どの Web サーバーを利用していても発生します。

    JIN:Rのテーマとして、対処していただくことになったそうなので、同じ現象に悩んでいる方がいらっしゃるならば、解消までお待ちいただくか、急ぎならば以下の方法で暫定対応してください。

    ■暫定対応(その1)
    パス:<>\wp-content\themes\jinr\include\customizer\controls\core
    ファイル:class-jinr-demo-import-control.php
    関数:jinr_export_json_exclude(おおよそ10行目)
    修正内容:13行目に以下を追記する
    if (empty($demoFile)) {
    $demoFile = file_get_contents(get_template_directory_uri() . '/include/customizer/preset/jinr-cei-export-' . $preset_num . '.json');
    }
    修正理由:Windows 版 PHPだと、12行目の curl_get_contents の結果が empty となるため、file_get_contents で再取得を試みる

    ■暫定対応(その2)
    パス:<>\wp-content\themes\jinr\include
    ファイル:custom-functions.php
    関数:curl_get_contents(おおよそ2304行目)
    修正内容:curl_exec の前に以下を追記する
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    修正理由:Windows 版 PHPだと、サーバー証明書の検証を有効にすると、HTTPSサイトから情報を受け取れない

    ご参考まで。

    2023/02/06 14:02
CLOSE