![NetCommons3.2.0 を PHP7.2.10 でインストールするときは注意が必要](https://res.cloudinary.com/ravinetree/images/w_2560,h_1703/c_fit/f_auto,q_auto/v1620017552/blog/fashion-get-ready-getting-ready-37726/fashion-get-ready-getting-ready-37726.jpg?_i=AA 2560w, https://res.cloudinary.com/ravinetree/images/w_300,h_200/c_fit/f_auto,q_auto/v1620017552/blog/fashion-get-ready-getting-ready-37726/fashion-get-ready-getting-ready-37726.jpg?_i=AA 300w, https://res.cloudinary.com/ravinetree/images/w_1024,h_681/c_fit/f_auto,q_auto/v1620017552/blog/fashion-get-ready-getting-ready-37726/fashion-get-ready-getting-ready-37726.jpg?_i=AA 1024w, https://res.cloudinary.com/ravinetree/images/w_768,h_511/c_fit/f_auto,q_auto/v1620017552/blog/fashion-get-ready-getting-ready-37726/fashion-get-ready-getting-ready-37726.jpg?_i=AA 768w, https://res.cloudinary.com/ravinetree/images/w_1536,h_1022/c_fit/f_auto,q_auto/v1620017552/blog/fashion-get-ready-getting-ready-37726/fashion-get-ready-getting-ready-37726.jpg?_i=AA 1536w, https://res.cloudinary.com/ravinetree/images/w_2048,h_1363/c_fit/f_auto,q_auto/v1620017552/blog/fashion-get-ready-getting-ready-37726/fashion-get-ready-getting-ready-37726.jpg?_i=AA 2048w)
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)に解凍する.
- ブラウザからインストール作業を進める.
という感じになります.しかし,ブラウザ上からインストール作業を進める段階(データベースに接続する段階)において,
![](https://solaqua.jp/wp-content/uploads/2018/09/cakephp-internal-error.png)
というエラーが出てきました.
内部エラーが発生しました。
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上だと一筋縄ではいきませんでした.
環境の構築や前提というものが大切だと身にしみて思いました.