MacにNC3がインストールできない

投稿日時: 2018/08/30 cmiyaji

Mac, OSX(10.13.6)に,NC3(3.1.10)をインストールしようとして,DBの設定で「内部エラーがおきました」とwebで出て止まってしまいます.DBは,MySQL(8.0.12)のコミュニティサーバを使用,apache, php等は,brewを使ってインストールしてあります.

app/tmp/logs/Debug.logのログを見ると,

> 2018-08-28 14:33:32 Info: DB Connected

> 2018-08-28 14:33:32 Info: Database nc3 for Database/Mysql created successfully

> 2018-08-28 14:33:32 Info: [Migrations.migration] Start migrating all plugins

> 2018-08-28 14:33:32 Info: [migration] Start migrating "Files" for master connection

> 2018-08-28 14:33:32 Info: [migration]   cd /Users/cmiyaji/Dropbox/Sites/NetCommons3/app && Console/cake Migrations.migration run all -p Files -c master -i master 2>&1

> 2018-08-28 14:33:32 Info: [migration]   Cake Migration Shell

> 2018-08-28 14:33:32 Info: [migration]   ---------------------------------------------------------------

> 2018-08-28 14:33:32 Info: [migration]   Error: Mysql の設定が見つからない、または接続できませんでした。

> 2018-08-28 14:33:32 Info: [migration]   #0 /Users/cmiyaji/Dropbox/Sites/NetCommons3/vendors/cakephp/cakephp/lib/Cake/Model/Datasource/DboSource.php(271): Mysql->connect()

> 2018-08-28 14:33:32 Info: [migration]   #1 /Users/cmiyaji/Dropbox/Sites/NetCommons3/vendors/cakephp/cakephp/lib/Cake/Model/ConnectionManager.php(105): DboSource->__construct(Array)

> 2018-08-28 14:33:32 Info: [migration]   #2 /Users/cmiyaji/Dropbox/Sites/NetCommons3/vendors/cakephp/cakephp/lib/Cake/Model/Model.php(3646): ConnectionManager::getDataSource('master’)

 

というようになっています.

どなたか,同じ構成で成功されたかた,居られませんでしょうか?

 

解決しました

投稿日時: 2018/09/16 cmiyaji

 

(準備)CakePHP2.xを動かしてみる

NetCommons3は,CakePHP2を使っているので,そこでのDB接続のやり方を使っています.それなのでCakePHP2のインストールを確認することで若干問題が切り分けられます,またCakePHPのサイト等に情報が数多くあります.apacheであればmod_rewriteが動くこと,それからhttpd.confでのdirの設定,書き込み権限等を確認し,CakePHP2がDBと連携して動くことを確認しました.

ここでわかったのは,MacのMySQLを使うとき,ホスト名がlocalhostだと,socketを使うという事です.そのためには,database.phpに,ソケットの情報を取れるように,'unix_socket' => '/tmp/mysql.sock’,(ここで/tmp/mysql.sockはMySQLのソケット情報が書いてあるファイル名)を書いておくか,hostにlocalhostでなくて127.0.0.1と書く必要があります.localhostでなく127.0.0.1を使うとuser/passを利用してMySQLはDBの接続が出来ます.

また,最新のMySQL8以降だと,defaultでログイン認証がuser/passでなくてcaching_sha2_passwordになっています.これは面倒なので,mysql_native_passwordに変更しました.mariaDBをBrewでインストールした場合は,user/passで大丈夫でした.


(NetCommons3の設定)

(1) host名はlocalhostでなく127.0.0.1に

NC3のdatabase.phpはwebでパラメータを入れたら作られるものなので,unix_socketを書いておけません.そこで,webでのインストール時にlocalhostでなく,host名に127.0.0.1を書きます.そうしたら,まずMySQLに色々なテーブルが出来上がりました.

 
(2) PHP7.2ではobjectというクラス名を使わない

その次のNC3の管理者権限を作るページでまた止まりました.これは,logを調べてみると,

2018-09-14 23:46:45 Error: Fatal Error (64): Cannot use 'object' as class name as it is reserved in [/…/NetCommons3/vendors/cakephp/cakephp/lib/Cake/Core/Object.php, line 18]

とあります.NC3とObjectでググると,ここにその直し方がのっていました.そこで,指示に従ってファイルを修正します.

 
以上の処理をしたら,無事,MacOSX(High Sierra)でNetCommons3.2.0とMySQL(community server) | mariaDBが連携して動き出しました.めでたしめでたし.

同じ問題でお悩みの方のヒントになれば幸いです.