前提・実現したいこと
タイトル通りですが、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 のキーワード検索結果から本件に該当するものを参照
以上、よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/18 12:49 編集