NetCommons3.2.0 を PHP7.2.10(CentOS7.5.1804)環境にインストールしようとしたときに内部エラーが発生して詰まったので,暫定的な対処法をメモしておきます.
NetCommons とは?
NetCommons とは,国立情報学研究所(NII)が開発している次世代情報共有基盤システムです.
2018年9月7日には NetCommons3.2.0 がリリースされ,着々とバージョンアップされています.
一言でまとめると CMS のような感じで,教育機関で使われているイメージがあります(北海道の道立高校では導入されはじめてますね!).
詳しくは,
をご確認ください.
前提環境について
今回の問題が起こった環境は次の通りです.
項目 | バージョン |
---|---|
OS | CentOS 7.5.1804 |
PHP | 7.2.10 |
データベース | MariaDB 5.5.60 |
NetCommons | 3.2.0 |
症状(内部エラー)
NetCommons3 をインストールする基本的な流れは,
- NetCommons3 のファイル一式をダウンロードする.
- ダウンロードしてきたファイル一式をWeb公開領域(DocumentRoot)に解凍する.
- ブラウザからインストール作業を進める.
という感じになります.しかし,ブラウザ上からインストール作業を進める段階(データベースに接続する段階)において,
というエラーが出てきました.
内部エラーが発生しました。
NetCommons3 インストール時に表示されたエラーメッセージ
Error: An Internal Error Has Occurred.
とのことなので,てっきりDB接続に問題があるのかと思っていました.しかし,app/tmp/logs/error.logというログを確認してみると,
Error: Cannot use 'object' as class name as it is reserved in [/var/www/html/test/NetCommons3/vendors/cakephp/cakephp/lib/Cake/Core/Object.php, line 18]
というように,’Object’ という名前がPHPの予約語と衝突していることがわかりました.
解決した
この時点でまた色々と調べてみると,既に解決策を示している方がいらっしゃいました.
この記事によると,app/Plugin/Migrations/Lib/CakeMigration.phpというコード上に原因があるようです.このコードの17行目を
- class CakeMigration extends Object { + class CakeMigration extends CakeObject {
というように変更してあげると,インストール作業を進められるようになりました.
おわりに
今回は検証目的で NetCommons3 をインストールしようと思ったのですが,意外と手間がかかって驚きました.
前にレンタルサーバ上でセットアップしたときはすんなり進んだ気がしたのですが,VPS上だと一筋縄ではいきませんでした.
環境の構築や前提というものが大切だと身にしみて思いました.