WordPress Twenty Seventeen
子テーマの「functions.php」
PHP Warning: Attempt to read property "xxxxx" on bool
子テーマの「functions.php」
PHP Warning: Attempt to read property "xxxxx" on bool
久しくチェックしていなかった「nginx の error.log」を見ると、「Attempt to read property」というワーニングメッセージが続発している。発生個所は、子テーマの「functions.php」に組み込んだカスタマイズコードの行になっている。
Attempt to read property "title"
Attempt to read property "description"
Attempt to read property "ID" on null
Attempt to read property "description"
Attempt to read property "ID" on null
以下、Attempt to read property への対応策を記録。
スポンサー リンク
目 次
1. 稼働環境
Raspberry Pi で運用している、WebサーバーのWordPress。
・WordPress:バージョン 6.3.1
・サーバー構造:Raspberry Pi (bullseye)Linux 6.1.21-v8+ aarch64
・Web サーバー:nginx/1.24.0
・PHP バージョン:8.1.22 (64ビット値をサポートしています)マンド用
・サーバー構造:Raspberry Pi (bullseye)Linux 6.1.21-v8+ aarch64
・Web サーバー:nginx/1.24.0
・PHP バージョン:8.1.22 (64ビット値をサポートしています)マンド用
2. PHP message: PHP Warning
「nginxのerror.log」の参照。
tail -f /var/log/nginx/error.log
sudo cat /var/log/nginx/error.log
sudo cat /var/log/nginx/error.log
2023/10/06 17:02:33 [error] 634#634: *374 FastCGI sent in stderr:
"PHP message: PHP Warning: Attempt to read property "title" on bool
in /home/yaopi/www/wordpress/wp-content/themes/twentyseventeen-child/functions.php
on line 344
PHP message: PHP Warning: Attempt to read property "description" on bool
in /home/yaopi/www/wordpress/wp-content/themes/twentyseventeen-child/functions.php
on line 350
・・・・・
" while reading response header from upstream,
client: 122.103.163.206, server: arakan60.com,
request: "GET /?p=12648 HTTP/1.0",
upstream: "fastcgi://unix:/run/php/php8.1-fpm.sock:",
host: "arakan60.com", referrer: "https://arakan60.com/?page_id=33"
このエラーは、「アロー演算子でプロパティの値を取得しようと際に存在しないプロパティを指定すると発生するエラー」で、「$Link_title = $graph->title;」で発生。
矢印「->」はアロー演算子と呼ぶ
PHPのアロー演算子は、主にクラスから生成されたインスタンスで、プロパティやメソッドにアクセスする場合に用いられます。
3. 解決策
※失敗:以下の解決策を適用すると、
エラーメッセージは出なくなるが、
外部リンクのブログカードが正常に表示されなくなる。
エラーメッセージは出なくなるが、
外部リンクのブログカードが正常に表示されなくなる。
「Attempt to read property "title"」」が発生した箇所。
(外部リンク用ブログカードのショートコードの一部。)
(外部リンク用ブログカードのショートコードの一部。)
//OGPタグからタイトルを取得
$Link_title = $graph->title;
if(!empty($title)){
$Link_title = $title;//title=""の入力がある場合はそちらを優先
}
【isset関数】(引数に指定した変数に、値が設定されており、かつ、NULLではない場合にはtrue(正)の値を戻り値に返す)を使用し、引数をチェックするように、子テーマの「functions.php」を修正。
$Link_title = $graph->title;
↓
$Link_title = (isset($graph->title));
その他も同様に修正。
$Link_description = wp_trim_words($graph->description, 60, '…' );//文字数は任意で変更
↓
$Link_description = wp_trim_words((isset($graph->description)), 60, '…' );//文字数は任意で変更
----------------------
$retHtml .= '<div class="kkijiImgArea">' . get_the_post_thumbnail($page->ID,array(100, 100) ) . '</div>';
↓
$retHtml .= '<div class="kkijiImgArea">' . get_the_post_thumbnail(isset($page->ID),array(100, 100) ) . '</div>';
参考:
以上。
(2023.10.07)
(2023.10.07)
スポンサー リンク