baserCMS の4.0.2.1のインストール時に、Illegal string offset 'Content' 等の警告がでる
flower4487 > baserCMS の4.0.2.1のインストール時に、Illegal string offset 'Content' 等の警告がでる @ 2017/3/16 17:22 |
---|
本日、たまたま最新版のbaserCMS 4.0.2.1 をダウンロードしてインストールしようとしたら、
というようなエラーがでました。PHPは、7.1.1, SQLite 3.15.1 です。 原因は、BcUploadBehavior.php の $savePathプロパティ変数が配列ではなく文字列なのが原因のようです。
PHP5.3以前ではうごいていたのかもしれませんが、5.4移行は警告がでるのかしもれません。 修正された方がいいと思います。 以上、報告いたします。 ■ BaserCMSのバージョン: 4.0.2.1 |
goichi > Re: baserCMS の4.0.2.1のインストール時に、Illegal string offset 'Content' 等の警告がでる @ 2017/3/16 23:13 |
---|
こんにちは。
もしかしたら、baserCMSの土台になっているCakePHPが、7.1以上に対応できていないかも知れません。CakePHPの動作要件がありますので、参考までに掲載しておきます。 |
flower4487 > Re: baserCMS の4.0.2.1のインストール時に、Illegal string offset 'Content' 等の警告がでる @ 2017/3/17 12:20 |
---|
リプライ有難うございます。
> もしかしたら、baserCMSの土台になっているCakePHPが、7.1以上に対応できていないかも知れません。 > CakePHPの動作要件がありますので、参考までに掲載しておきます。 サイトからダウンロードした basercms-4.0.2.1.zip に同梱されている CakePHPのバージョンは、2.8.5 でした (CORE/Cake/VERSION.txtを参照し確認)。 また、CakePHP バージョン 2.8.0 以上は PHP 7 をサポートするので大丈夫だと思います。また、7.1以上の場合、mcryptが必要と書かれていますが、これもインストール済みです。
警告がでた、CORE/Baser/Model/Behavior/BcUploadBehavior.php の106,111行目をみると
「 $this->savePath[$Model->alias] 」という部分で警告がでています。 この場合、$Model->alias は、'Content' もしくは 'EditorTemplate' というstring型ですが、 $this->savePath は、初期値が長さゼロの文字列なので、このゼロの長さの文字列に対し、文字単位のアクセスを 数値ではない('Content' or 'EditorTemplate' という) インデックス(オフセット)でアクセスしようとして、 警告が出ています --> 文字列への文字単位のアクセスと修正 。 憶測になってしまいますが、$this->savePath プロパティ変数は、最初単一のパスを格納していたが、途中で 'Content' もしくは 'EditorTemplate' の複数のパスを保存するものに意味を変更した。しかし、初期値を文字列から配列に変更するのを失念していたため警告がでるようになってしまった、ということではないかと思います。 スレッドの最初に示したように、BcUploadBehavior.php に「public $savePath = array();」の修正を加えたら、ブラウザから最初にアクセスしたときのインストール時設定も正常に動作し、いまのところ問題なく動いているように見えます(まだ使い始めたばかりですが...)。 ■ BaserCMSのバージョン: 4.0.2.1 |