質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

レスポンシブWebデザイン

レスポンシブWebデザイン(RWD)は、スクリーンのサイズ、プラットフォーム、オリエンテーションに基づいて様々なデバイスで最適のサイトを生成するのウェブデザインとその開発のアプローチ方法を呼びます。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

1230閲覧

PHP5からPHP7環境へのWebコンテンツ移行での「Fatal error」で画面生成が出来ない事象

naizawa

総合スコア16

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

レスポンシブWebデザイン

レスポンシブWebデザイン(RWD)は、スクリーンのサイズ、プラットフォーム、オリエンテーションに基づいて様々なデバイスで最適のサイトを生成するのウェブデザインとその開発のアプローチ方法を呼びます。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2021/06/18 11:52

前提・実現したいこと

タイトル通りですが、PHP5.4で正常動作しているWebサイトのコンテンツを
PHP7.2の環境に移行する作業を行っておりまり、PHP7については修正作業者レベルです。

PHP5から7への変更点を参照しながら、ソースコード41行目のような
修正を行っておりましたが、72行目の修正方法について「var_dump」で確認しながら
読み進めても解決策を見つける事ができません。

解決策といいますか、取っ掛かりになりそうな情報をご教授願えませんでしょうか。

エラーMSGで出力される、「DOMNode :: appendChild()に渡される引数1は、
DOMNodeのインスタンスである必要がある」との事ですが、PHP5から変更された
箇所なのであろうと特定はできるのですが、変更方法が現在のスキルでは難しい状況です。

発生している問題・エラーメッセージ

Warning: Invalid argument supplied for foreach() in /var/www/html/ssl/product/support/php/os.php on line 41 Fatal error: Uncaught TypeError: Argument 1 passed to DOMNode::appendChild() must be an instance of DOMNode, null given in /var/www/html/ssl/product/support/php/os.php:72 Stack trace: #0 /var/www/html/ssl/product/support/php/os.php(72): DOMNode->appendChild(NULL) #1 /var/www/html/ssl/product/support/php/os.php(84): create_category(Object(PageContent), Object(PhpDomDocument), Object(stdClass)) #2 /var/www/html/ssl/product/support/php/os.php(108): write_categories(Object(PageContent), Array) #3 /var/www/html/ssl/product/support/cad/os/index.html(3): write_categories_os(Object(PageContent)) #4 /var/www/html/ssl/product/support/php/loader.php(267): include('/var/www/html/s...') #5 /var/www/html/ssl/product/support/php/loader.php(251): TemplateLoader->includeTemplateFile('/var/www/html/s...') #6 /var/www/html/ssl/product/support/php/page_content.php(71): TemplateLoader->includeContent() #7 /var/www/html/ssl/product/support/templates/frame_content.html(56): PageContent->includeContent() #8 /var/www/html/ssl/product/support/php/ in /var/www/html/ssl/product/support/php/os.php on line 72

該当のソースコード

PHP

140 //foreach ($items as $index => $item) { 241 foreach ((array)$items as $index => $item) { //(array)を追加 3 4 567 // Webコンテンツ アイテムリスト 668 $list = new DomListDefinition($template, $doc); 769 $list->dl->attributes = ["class" => "properties flex-area list"]; 870 $list->dt->creator = 'create_property_title'; 971 1072 $section->appendChild($list->create($items)); 1173 1274 return $section;

試したこと

・var_dump($<変数名>)での変数値確認
→変数内にnullの値が散見されておりが、null値がある場合はエラーとなるなどの情報も
Webサイトで見つけましたが、PHPバージョン差異で変更になった記述は見当たらず。

・エラーMSGでのWebサイト検索
Fatal error: Uncaught TypeError: Argument 1 passed to DOMNode::appendChild() must be an instance of DOMNode,

・PHP公式サイトの情報検索
PHP 5.6.x から PHP 7.0.x への移行
https://www.php.net/manual/ja/migration70.php

連想配列を使用しているので、その辺がバージョン差異としてエラーになっているのか等
該当しそうな箇所を探しても探し当てられませんでした。

・teratailサイト内検索
PHP5 PHP7 のキーワード検索結果から本件に該当するものを参照

以上、よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

エラーメッセージからすると、$list->create($items)nullのようですね。
つまりDomListDefinitionクラスのcreateメソッドがnullを返していると。
なので、

  • なぜnullが返されたか
  • そもそもcreateメソッドはDOMNodeを返すようになっているのか

を確認してみるとよいのではないかと思います。

投稿2021/06/18 12:19

itagagaki

総合スコア8402

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

naizawa

2021/06/18 12:49 編集

アドバイス回答ありがとうございます。 該当の箇所て前で「$items」の中身を確認したところ、最終行でnullとなっておりました。 var_dump($items); $section->appendChild($list->create($items)); <$itemsの内容:長文になるので省略> { ["title"]=> string(0) "" ["body"]=> string(0) "" } } NULL ここから遡っていく形で進めていきたいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問