バージョンアップ後のデータベースエラーについて

【環境情報】
・baserCMSのバージョン:4.8.1
・レンタルサーバー名:ローカル環境
・使用テーマ:専用テーマ?
・PHPスキル(自己評価): D

〇 自作Pluginではないので、カテゴリはここでいいか分かりませんが、エラー・デバッグ関係なのでこちらに投稿します。

〇 借りているサーバのPHPのバージョンが上がるとの事で、社内にテスト環境を構築してテストをおこなっています。
basercms4.8.1
PHP 7.4
表示は問題なくされたのですが、管理画面でコンテンツの更新をおこなうと以下のエラーが発生します。(デバッグモードにして表示させました)

エラー: SQLSTATE[42S22]: Column not found: 1054 Unknown column ‘Array’ in ‘field list’

SQL Query: UPDATE basercms.mysite_optional_links SET id = 183, blog_content_id = 1, status = 0, name = ‘’, blank = ‘0’, nolink = ‘0’, publish_begin = NULL, publish_end = NULL, file = Array, blog_post_id = 303, modified = ‘2024-07-18 17:18:19’ WHERE basercms.mysite_optional_links.id = ‘183’

Stack Trace

* [CORE\Baser\Model\Datasource\DboSource.php line 515](https://localhost/cmsadmin/blog/blog_posts/edit/1/303#) → [PDOStatement->execute(array)](https://localhost/cmsadmin/blog/blog_posts/edit/1/303#)
* [CORE\Baser\Model\Datasource\DboSource.php line 481](https://localhost/cmsadmin/blog/blog_posts/edit/1/303#) → [DboSource->_execute(string, array)](https://localhost/cmsadmin/blog/blog_posts/edit/1/303#)
* [CORE\Cake\Model\Datasource\Database\Mysql.php line 425](https://localhost/cmsadmin/blog/blog_posts/edit/1/303#) → [DboSource->execute(string)](https://localhost/cmsadmin/blog/blog_posts/edit/1/303#)
* [CORE\Cake\Model\Model.php line 1926](https://localhost/cmsadmin/blog/blog_posts/edit/1/303#) → [Mysql->update(OptionalLink, string, array)](https://localhost/cmsadmin/blog/blog_posts/edit/1/303#)
* [CORE\Cake\Model\Model.php line 1760](https://localhost/cmsadmin/blog/blog_posts/edit/1/303#) → [Model->_doSave(array, array)](https://localhost/cmsadmin/blog/blog_posts/edit/1/303#)
* [CORE\Baser\Model\BcAppModel.php line 145](https://localhost/cmsadmin/blog/blog_posts/edit/1/303#) → [Model->save(array, boolean, array)](https://localhost/cmsadmin/blog/blog_posts/edit/1/303#)
* [APP\Plugin\OptionalLink\Event\OptionalLinkModelEventListener.php line 164](https://localhost/cmsadmin/blog/blog_posts/edit/1/303#) → [BcAppModel->save(array)](https://localhost/cmsadmin/blog/blog_posts/edit/1/303#)
* [CORE\Baser\Event\CakeEventManager.php line 244](https://localhost/cmsadmin/blog/blog_posts/edit/1/303#) → [OptionalLinkModelEventListener->blogBlogPostAfterSave(CakeEvent)](https://localhost/cmsadmin/blog/blog_posts/edit/1/303#)
* [CORE\Baser\Event\BcEventDispatcher.php line 68](https://localhost/cmsadmin/blog/blog_posts/edit/1/303#) → [CakeEventManager->dispatch(CakeEvent)](https://localhost/cmsadmin/blog/blog_posts/edit/1/303#)
* [CORE\Baser\Model\BcAppModel.php line 1680](https://localhost/cmsadmin/blog/blog_posts/edit/1/303#) → [BcEventDispatcher::dispatch(string, BlogPost, array, array)](https://localhost/cmsadmin/blog/blog_posts/edit/1/303#)
* [CORE\Baser\Event\BcModelEventDispatcher.php line 150](https://localhost/cmsadmin/blog/blog_posts/edit/1/303#) → [BcAppModel->dispatchEvent(string, array)](https://localhost/cmsadmin/blog/blog_posts/edit/1/303#)
* [CORE\Baser\Event\CakeEventManager.php line 244](https://localhost/cmsadmin/blog/blog_posts/edit/1/303#) → [BcModelEventDispatcher->afterSave(CakeEvent)](https://localhost/cmsadmin/blog/blog_posts/edit/1/303#)
* [CORE\Cake\Model\Model.php line 1970](https://localhost/cmsadmin/blog/blog_posts/edit/1/303#) → [CakeEventManager->dispatch(CakeEvent)](https://localhost/cmsadmin/blog/blog_posts/edit/1/303#)
* [CORE\Cake\Model\Model.php line 1754](https://localhost/cmsadmin/blog/blog_posts/edit/1/303#) → [Model->_doSave(array, array)](https://localhost/cmsadmin/blog/blog_posts/edit/1/303#)
* [CORE\Baser\Model\BcAppModel.php line 145](https://localhost/cmsadmin/blog/blog_posts/edit/1/303#) → [Model->save(array, array, array)](https://localhost/cmsadmin/blog/blog_posts/edit/1/303#)
* [CORE\Cake\Model\Model.php line 2515](https://localhost/cmsadmin/blog/blog_posts/edit/1/303#) → [BcAppModel->save(array, array)](https://localhost/cmsadmin/blog/blog_posts/edit/1/303#)
* [CORE\Cake\Model\Model.php line 2287](https://localhost/cmsadmin/blog/blog_posts/edit/1/303#) → [Model->saveAssociated(array, array)](https://localhost/cmsadmin/blog/blog_posts/edit/1/303#)
* [CORE\Baser\Plugin\Blog\Controller\BlogPostsController.php line 420](https://localhost/cmsadmin/blog/blog_posts/edit/1/303#) → [Model->saveAll(array)](https://localhost/cmsadmin/blog/blog_posts/edit/1/303#)
* [[internal function]](https://localhost/cmsadmin/blog/blog_posts/edit/1/303#) → [BlogPostsController->admin_edit(string, string)](https://localhost/cmsadmin/blog/blog_posts/edit/1/303#)
* [CORE\Cake\Controller\Controller.php line 499](https://localhost/cmsadmin/blog/blog_posts/edit/1/303#) → [ReflectionMethod->invokeArgs(BlogPostsController, array)](https://localhost/cmsadmin/blog/blog_posts/edit/1/303#)
* [CORE\Cake\Routing\Dispatcher.php line 193](https://localhost/cmsadmin/blog/blog_posts/edit/1/303#) → [Controller->invokeAction(CakeRequest)](https://localhost/cmsadmin/blog/blog_posts/edit/1/303#)
* [CORE\Cake\Routing\Dispatcher.php line 167](https://localhost/cmsadmin/blog/blog_posts/edit/1/303#) → [Dispatcher->_invoke(BlogPostsController, CakeRequest)](https://localhost/cmsadmin/blog/blog_posts/edit/1/303#)
* [ROOT\index.php line 163](https://localhost/cmsadmin/blog/blog_posts/edit/1/303#) → [Dispatcher->dispatch(CakeRequest, CakeResponse)](https://localhost/cmsadmin/blog/blog_posts/edit/1/303#)

ここかな?!と思う部分を展開してみたところ、変数fileにarrayを代入している所がありました。

array(
	'bge-kind' => 'primary',
	'bge-text' => '',
	'bge-link' => '',
	'bge-target' => '',
	'bge-ckeditor' => '',
	'bge-path' => '',
	'bge-formated-size' => '0',
	'bge-size' => '0',
	'bge-name' => '',
	'bge-download' => 'bge:checked',
	'bge-embed-label' => '',
	'bge-embed-code' => '',
	'bge-caption' => '',
	'bge-empty' => '',
	'bge-delay' => '',
	'bge-duration' => '',
	'bge-lat' => '',
	'bge-lng' => '',
	'bge-zoom' => '',
	'bge-url' => '',
	'bge-search' => '',
	'bge-alt' => '',
	'bge-summary' => '',
	'th' => '',
	'td' => '',
	'bge-title-h2' => '',
	'bge-title-h3' => '',
	'bge-id' => '',
	'bge-thumb' => '',
	'OptionalLink' => array(
		'id' => '183',
		'blog_content_id' => '1',
		'status' => '0',
		'name' => '',
		'blank' => '0',
		'nolink' => '0',
		'publish_begin_date' => '',
		'publish_begin_time' => '',
		'publish_begin' => '',
		'publish_end_date' => '',
		'publish_end_time' => '',
		'publish_end' => '',
		'file' => array(
			'name' => '',
			'type' => '',
			'tmp_name' => '',
			'error' => (int) 4,
			'size' => (int) 0
		)
	),

以下省略

これが悪さをしてSQLにfile=arrayと渡しているのかなと思っていますが、
basercms4.5.6、PHP 7.4の組み合わせではエラーが発生しなかった事もあり
どこをどう修正すればいいか困っております。

〇 basercmsのバージョンアップは、4.5.6から一気に4.8.1にしました。
(因みに本番環境はbasercms4.5.1ですが、4.5.6でlib全体が更新がかかっていたようなので、
いったん、4.5.6にしました)

〇 PHPはVSCodeでデバッグする環境を構築したのですが、ブレークポイントでとまらないので、
完全なデバッグができずに、こちらに質問させていただきました。
何かヒントになるような事があれば書き込みをお願いいたします。

これを解消してしばら本番稼働させたのち、(1年弱)
最終的には、basercms5、PHP8で本番環境を稼働させる予定です。

宜しくお願いいたします。

こんにちは!

エラーの内容を確認したところ、OptionalLinkプラグインに関するデータ保存時に
何かしらの問題が発生しているようですね。

baserCMS自体は4.8.1にアップデートされたようですが、
下記プラグインのバージョンはいくつになってますでしょうか?
(プラグイン一覧画面にて確認できます)

  • Uploader(アップローダー)
  • OptionalLink

お世話になります。

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

それぞれのプラグインのバージョンは以下になります。
uploader 4.8.1 登録日:2018-10-23 更新日:2024-07-17
OptionalLink 3.0.4 登録日:2018-11-08 更新日:2018-11-08

OptionalLinkが古いな・・・と思って最新のバージョンを探してみたのですが、
探し方が悪いのか見つける事ができませんでした。

宜しくお願いいたします。

@nsc_miyachi

バージョン情報ありがとうございます!
どうやらOptionalLinkが古く、baserCMS4.8.1へ対応できていないようですね。

ちなみに私も探してみましたが、現在マーケットには無さそうです。
今後新しいバージョンが出たりするかもしれませんが、それまでは
古いbaserCMSを使い続けるか、OptionalLinkを無効にするしか無さそうです・・・。
(あとは高難度にはなりますが自作プラグイン開発くらいでしょうか・・・)

お世話になります。

それしかないですよね・・・
無効にすると結構な影響が出そうなので、
動作する中での最新バージョンでいくよう話をしてみます。

ありがとうございます。

お世話になります。

akaskyさまの回答から対応が難しいと担当部署に話をする事にしましたので、
<解決済>タグをつけますが、情報をお持ちの方がいらっしゃいましたら、
引き続き宜しくお願いいたします。