TOPページからブログページへの リンクで表示されるページ上部にPHPのエラー 投稿する
投稿者:kamo
投稿日時:2025-06-17 09:24:29
いつも開発ありがとうございます、kamoです。
4月に Sqlite版SOY CMS 3.20.2、PHP8.2.22にバージョンアップしたサイトなのですが、
TOPページにブロック設定でブログ記事を表示しているのですが、
ブログ記事タイトルのリンクをクリックして該当記事ページへ移動すると
ページ上部に
PHPのエラーが表示されていることがわかり、投稿いたしました。
リンクで表示されるブログ記事ページのエラー内容
Deprecated: strlen(): Passing null to parameter #1 ($string) of type string is deprecated in /*********/common/site_include/plugin/ButtonSocial/logic/BuildMetaLogic.class.php on line 13
修正方法をお教え頂きたくどうぞよろしくお願いいたします。
4月に Sqlite版SOY CMS 3.20.2、PHP8.2.22にバージョンアップしたサイトなのですが、
TOPページにブロック設定でブログ記事を表示しているのですが、
ブログ記事タイトルのリンクをクリックして該当記事ページへ移動すると
ページ上部に
PHPのエラーが表示されていることがわかり、投稿いたしました。
リンクで表示されるブログ記事ページのエラー内容
Deprecated: strlen(): Passing null to parameter #1 ($string) of type string is deprecated in /*********/common/site_include/plugin/ButtonSocial/logic/BuildMetaLogic.class.php on line 13
修正方法をお教え頂きたくどうぞよろしくお願いいたします。
投稿者:齋藤毅
投稿日時:2025-06-17 09:57:02
の107行目から/CMSインストールディレクトリ/common/site_include/plugin/ButtonSocial/logic/BuildMetaLogic.class.php
if(strlen($filepath)){
$http = (isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == "on") ? "https" : "http";
return $http . "://" . str_replace("//", "/", $_SERVER["HTTP_HOST"]. "/" . $filepath);
}
というコードがありますが、こちらを
if(strlen($filepath)){
$http = (isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == "on") ? "https" : "http";
return $http . "://" . str_replace("//", "/", $_SERVER["HTTP_HOST"]. "/" . $filepath);
}else{
return "";
}
にすればエラーは消えると思います。
投稿者:kamo
投稿日時:2025-06-17 11:27:33
ご回答ありがとうございます、kamoです。
お教え頂いたコードに変更しましたが、エラーコードは消えず
CMSのキャッシュも削除していますが、そのままです。
他に直す箇所はありますでしょうか?
ご多忙のところ恐縮ですが、
どうぞよろしくお願いいたします。
お教え頂いたコードに変更しましたが、エラーコードは消えず
CMSのキャッシュも削除していますが、そのままです。
他に直す箇所はありますでしょうか?
ご多忙のところ恐縮ですが、
どうぞよろしくお願いいたします。
投稿者:齋藤毅
投稿日時:2025-06-17 11:34:04
ゴリ押しの方法ですが、
の13行目の/CMSインストールディレクトリ/common/site_include/plugin/ButtonSocial/logic/BuildMetaLogic.class.php
if(strlen($attrImagePath)) $image = $attrImagePath;
を
if(strlen((string)$attrImagePath)) $image = $attrImagePath;
に変更してみてください。
投稿者:kamo
投稿日時:2025-06-17 13:52:25
度々お手数をおかけします。
上記に変更しましたが、結果は変わりなくPHPエラーが出たままです。
上記に変更しましたが、結果は変わりなくPHPエラーが出たままです。
投稿者:齋藤毅
投稿日時:2025-06-17 14:15:46
の13行目は元々/*********/common/site_include/plugin/ButtonSocial/logic/BuildMetaLogic.class.php
if(strlen($attrImagePath)) $image = $attrImagePath;
↑ のコードでしたか?
PHPであれば、strlen関数にnullという値を渡してはならず、
(string)$attrImagePath
の処理でnullを空文字(0文字の文字列)に変換すれば、今回のエラーは回避出来るはずなのですが、これで解決できないとエラーの原因がわからないです。
投稿者:kamo
投稿日時:2025-06-17 15:12:52
13行目は
夜にでもバージョンを最新の3.20.5に上げてみます。
結果をまた投稿します。
if(strlen($attrImagePath)) $image = $attrImagePath;
で間違いないです。
夜にでもバージョンを最新の3.20.5に上げてみます。
結果をまた投稿します。
投稿者:kamo
投稿日時:2025-06-17 21:59:46
kamoです。
ご教示頂いた内容の
-----------------------
・・・107行目から
------------------------
という内容でPHPエラーが消えました。
日中の修正ですが、
私のミスで同じサーバー内の別のSOYCMSのBuildMetaLogic.class.phpコードを修正して
しまっていたことに気が付き、改めて、該当ドメインのファイルを修正したところ、
エラーが消えました。
大変お騒がせいたしました。
ご教示ありがとうございました。
ご教示頂いた内容の
-----------------------
・・・107行目から
if(strlen($filepath)){
$http = (isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == "on") ? "https" : "http";
return $http . "://" . str_replace("//", "/", $_SERVER["HTTP_HOST"]. "/" . $filepath);
}
というコードがありますが、こちらを
if(strlen($filepath)){
$http = (isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == "on") ? "https" : "http";
return $http . "://" . str_replace("//", "/", $_SERVER["HTTP_HOST"]. "/" . $filepath);
}else{
return "";
}
にすればエラーは消えると思います。
------------------------
という内容でPHPエラーが消えました。
日中の修正ですが、
私のミスで同じサーバー内の別のSOYCMSのBuildMetaLogic.class.phpコードを修正して
しまっていたことに気が付き、改めて、該当ドメインのファイルを修正したところ、
エラーが消えました。
大変お騒がせいたしました。
ご教示ありがとうございました。