CakePHPのデータベース接続エラーについて

このQ&Aのポイント
  • Mac OS X 10.9.5のMAMP環境でCakePHPのデータベース接続エラーが発生しています
  • database.phpとphp.iniの設定を変更しましたが問題は解決されていません
  • 初心者のため、詳しい方の助けを求めています
回答を見る
  • ベストアンサー

CakePHPのデータベース接続エラーについて

MySQLもCakePHPも初心者です。 詳しい方よろしくお願い申し上げます。 当方のPC環境はMac OS X 10.9.5で、MAMPをインストールして 色々なサイトを見ながらなんとか初期設定までは完了しました。 その後、下記の様なエラーが表示されて、色々グーグル検索し、 CakePHP is NOT able to connect to the database. Database connection "Mysql" is missing, or could not be created. database.phpのファイルも書き換えて、iTermからMysqlに接続して ユーザーも作成出来ましたが、依然としてエラーは解消されないので PHPの設定もphp.iniで追記してみましたが、エラーが解消されず もうどうして良いかわかりません。 (参考にしたページ:http://www.phpbook.jp/cakephp/install/index2.html  http://locombox.com/posts/35  他) どうぞよろしくお願いします。

  • MySQL
  • 回答数3
  • ありがとう数6

質問者が選んだベストアンサー

  • ベストアンサー
  • mpro-gram
  • ベストアンサー率74% (170/228)
回答No.3

とりあえず、順番に検証必要でしょう。 まずは、 php, phpmyadmin , mysqlサーバー のそれぞれのversion確認 phpMyAdminでの接続は、最新版なら mysqliクラスのはずだけど、そこはどのようになってますか?わざわざmysql関数に書き換えたりしてないよね? インストールしたmampディレクトリー下の phpmyadmin/config.inc.php 内の以下の行チェック $cfg['Servers'][$i]['extension'] = 'mysqli'; で、phpMyAdminで接続できると云うことは、php.iniのmysqli 接続設定はそのときのままでよいということ。php.ini書き換えてphpMyAdminすら繋がらなくなったりしてないかな? まずは php.ini をもどして apache 再起動。(これが解らなくなっていたら、mampを再インストールして初期値に戻す方が早いかも??) で、そのときの php.ini の mysqli 用設定で以下の項目を調査。 mysqli.default_port = 3306 mysqli.default_socket = "MySQL" ;; これは、windows のサービス登録のばあい。mac 用はmac 用の記述がすでに php.ini に記載されていたはず ;; mysqli.default_host = → cakePHP はdatasourceの記述からすると version 2 以降だよね? 1.3時代と記述方法が違うし、cakePHP1.3時代の情報がかなり引っかかるので情報のversionもよく確認のこと。 cakePHP2.xではpdo 接続なので、socket 接続なら socket キー指定必須 // 以下 database.php記述: propaty 設定部分のみ 抜粋 public $default = array( 'datasource' => 'Database/Mysql', 'port' => 3306, /* php.ini のmysqli.default_port の値 */ 'socket'=> 'MySQL', /* php.ini のmysqli.default_socket の値を転記(大文字小文字も間違わずに転記のこと), 空欄なら、このキー省略 */ 'host' => 'localhost', /* または、'127.0.0.1' 、 php.ini のmysqli.default_hostが空欄なら、このキー省略 */ /* その他 login , password , database , encoding , prefix キーを適宜設定 */ };

dtp_yukico
質問者

お礼

ご教示感謝致します。 $cfg['Servers'][$i]['extension'] = 'mysqli'; というのがなくて、php.iniが間違っているのかと思い とりあえずMAMPを再インストールをしました。 (MAMPバージョン)3.0.7.3をインストールし、PHPは5.6.2 / MySQLは5.6 phpMyAdminは5.6.2です。 新しくインストールした中の、php.iniのファイルがmysql.default_port (mysql)となっているのですが、 これではダメという事でしょうか....? 遅い返答の上、初心者のため理解に乏しく申し訳ありません。 ありがとうございました。

その他の回答 (2)

  • sanzero
  • ベストアンサー率56% (58/102)
回答No.2

database.phpにリネームしていないとか? ターミナルからDBには繋げられるんですよね。 下記にしてみたらどうかという情報もありました。 class DATABASE_CONFIG { var $default = array( 'driver' => 'mysql', 'persistent' => false, 'host' => 'localhost', 'port' => '/Applications/MAMP/tmp/mysql/mysql.sock', // here is the key ! 'login' => 'you', 'password' => 'yourpass', 'database' => 'yourdb', 'prefix' => '', ); hostを127.0.0.1にしてはどうかという情報もありました。 WindowsユーザなのでMacはあまり詳しくないのですが、試してみてはいかがでしょう。

dtp_yukico
質問者

お礼

リネームというのは、database.phpという名前にするという事ですよね? それは大丈夫でした。 host127.0.0.1にしたり、上記の設定もやってみましたが、 別のエラーが出て上手く行きませんでした。 m(__)m お忙しい所 調べて頂いた様で本当にありがとうございました。

  • sanzero
  • ベストアンサー率56% (58/102)
回答No.1

データベースは作成しましたか? データベースの作成内容(host, user, password, database名) とdatabase.phpの内容を教えてください。

dtp_yukico
質問者

お礼

お忙しい所ありがとうございます。

dtp_yukico
質問者

補足

>sanzeroさん ありがとうございます。詳細が足らずすみません。 データベースは phpMyAdminからfirstcakeという名前のものを作りました そちらではユーザーやパスワードを設定しなかったので (phpMyAdminでフォルダと照合順序の設定のみ) MAMPのスタートページにあるものを設定しました。 database.phpの内容は以下になります: class DATABASE_CONFIG { public $default = array( 'datasource' => 'Database/Mysql', 'persistent' => false, 'host' => 'localhost', 'login' => 'root', 'password' => 'root', 'database' => 'firstcake', 'prefix' => '', 'encoding' => 'utf8', ); }

関連するQ&A

  • CakePHP導入時のデータベース設定

    こんにちは。 CakePHP2.4.10をダウンロード後の、「database.php」の設定についてお聞きしたいです。 当方Mac OSX、MAMPを使用しています。データベース管理はphpMyAdminで行っています。 phpMyAdminのユーザを以下のように設定しました。 ユーザ:cakephp ホスト:localhost パスワード:はい(任意のものに設定済み) グローバル特権:USAGE 権限移譲:いいえ MAMPのhtdocsフォルダ内にcakesのフォルダを移動後、 http://localhost:8888/cakephp/ を見て、エラーを確認すると、 CakePHP is NOT able to connect to the database. Database connection "Mysql" is missing, or could not be created. というエラーが出ています。 こちらのサイト(http://eight-smile.com/blog/web/cakephp%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%97%E3%81%A6%E3%81%BF%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82/)では、database.php.defaultの拡張子をdatabase.phpに変更後、 ・login ・password ・database のみを書き換えればよいとのことだったので、 ・'login' => 'cakephp' ・'password' => '任意のパスワード' ・'database' => 'mini_bbs'(phpMyAdminでテーブル作成済) としました。 それでもエラーは消えないです。どうすればよいのでしょうか?お教え下さい。

    • ベストアンサー
    • PHP
  • さくらVPS+CakePHPがうまく動きません

    さくらのVPSにCakePHPを導入して試しています。 VPSの設定が一通り完了し、現行のサイト(さくらのレンタルサーバーに設置)を移行してみたところ、どうしてもうまくいきません。 html+phpのページは何の問題もなく表示されるため、データベース(Mysql)が原因なのは明らかなのですが、スキル不足の問題もあり問題が見つけられず困っています。 具体的には、Mysqlにアクセスするページを表示しようとすると、このようなエラーがCakePHPのログに残ります。 ------ Error: Fatal Error (1): Allowed memory size of 134217728 bytes exhausted (tried to allocate 17218517 bytes) in [/var/cake/lib/Cake/Utility/String.php, line 247] 2013-07-13 09:43:45 Error: [FatalErrorException] Allowed memory size of 134217728 bytes exhausted (tried to allocate 17218517 bytes) #0 /var/cake/lib/Cake/Error/ErrorHandler.php(161): ErrorHandler::handleFatalError(1, 'Allowed memory ...', '/var/cake/lib/C...', 247) #1 [internal function]: ErrorHandler::handleError(1, 'Allowed memory ...', '/var/cake/lib/C...', 247, Array) #2 /var/cake/lib/Cake/Core/App.php(926): call_user_func('ErrorHandler::h...', 1, 'Allowed memory ...', '/var/cake/lib/C...', 247, Array) #3 /var/cake/lib/Cake/Core/App.php(899): App::_checkFatalError() #4 [internal function]: App::shutdown() #5 {main} ------ メモリーサイズを上げると、今度はタイムアウトでエラーになります。 CakePHPの「database.php」には、 public $default = array( 'datasource' => 'Database/Mysql', 'persistent' => false, 'host' => 'localhost', 'login' => 'hoge', 'password' => 'pass', 'database' => 'hoge', 'prefix' => '', 'encoding' => 'utf8', ); と設定していて、Mysqlにはユーザー「hoge」とテーブル「hoge」を用意しています。 たとえば、上の設定で「database」を存在しないテーブル「aaa」にすると、 Missing Database Connection Error: A Database connection using "Mysql" was missing or unable to connect. The database server returned this error: SQLSTATE[28000] [1045] Access denied for user 'aaa'@'localhost' (using password: YES) このように普通のエラーが表示されます。 また、「login」を存在しないユーザー名「bbb」にすると、 Missing Database Connection Error: A Database connection using "Mysql" was missing or unable to connect. The database server returned this error: SQLSTATE[42000] [1049] Unknown database 'bbb' こちらも普通のエラーが表示されます。 CakePHPのappディレクトリはvar直下に移動していますが、html直下に置いても結果は同じでした。 どういったことが原因なのか、解決方法や手がかりなどご教示いただければと思います。 ------------- さくらのVPS SSD 2G CentOS 6 x86_64 PHPのバージョン PHP 5.3.3 (cli) (built: Feb 22 2013 02:51:11) Mysqlのバージョン Ver 14.14 Distrib 5.1.69, for redhat-linux-gnu (x86_64) using readline 5.1 PDO PDO support => enabled PDO drivers => mysql, sqlite PDO Driver for MySQL, client library version => 5.1.69 PDO Driver for SQLite 3.x => enabled -------------

  • XREA : CakePHP(1.2.6)の設置作業で困っています。

    XREA で、 CakePHP(1.2.6)の設置作業をしています。 ディレクトリ: /cakephp/app/config ファイル名: database.php database.phpを修正した所、次のメッセージが表示されました。 ここから、---------- Release Notes for CakePHP 1.2.6. Read the changelog Your tmp directory is writable. The FileEngine is being used for caching. To change the config edit APP/config/core.php Your database configuration file is present. Parse error: syntax error, unexpected T_STRING, expecting ')' in /virtual/アカウント名/cakephp/app/config/database.php on line 88 ----- ココまで。 最後の「Parse error」は、どの様に対処したら良いですか。 database.phpの編集内容は、次の通り。 var $default = array( 'driver' => 'mysql', 'persistent' => false, 'host' => 'localhost', 'login' => 'user', 'password' => 'pass', 'database' => 'user', ''encoding' => 'utf8' 'prefix' => '', 以上、よろしくお願いします。

    • 締切済み
    • PHP
  • CAKEPHPのエラーについて

    XAMPPを使い、CAKEPHPの勉強をしております。 画面にアクセスからDBにアクセスすると、以下のエラーが表示されます。 Warning (512): SQL Error: 11: database disk image is malformed [CORE\cake\libs\model\datasources\dbo_source.php, line 666] 解決方法が分からないため、ご相談している次第です。 ご存知の方、いらっしゃいましたら、教えて頂けますでしょうか?

    • ベストアンサー
    • PHP
  • awsのec2にてcakephpインストール・設定

    amazon web serviceのec2でインスタンスを生成し、cakephpをインストールして使えるようにしたいと思っております。 すでに、apacheやphp、mySQLはインストール済みで、cakePHPをローカルのPCにダウンロードして、winSCPにてec2にアクセスしています。 ドキュメントルート以下にlibを置きたくなく、色々と調べまして現在は /home/○○○/app lib plugins などを置いていまして、confにてドキュメントルートを /home/○○○/app/webroot と設定してあります。 これで、ブラウザから http://○○○.jp/ でアクセスしたところ、 Warning: strtotime(): It is not safe・・・ というエラーが発生しました。 そこで、php.iniの date.timezone = を date.timezone = ‘Asia/Tokyo’ と変えてみてapacheを再起動しましたが、同じエラーが表示されてしまっています。 cakePHPのファイルを置く場所がいけないのでしょうか? それとも、設定で何か不備があるのでしょうか?? お分かりになられる方、いらっしゃいましたらご教授のほどお願い致します。

  • MySQL+PHP 接続エラーについて

    はじめて質問させて頂きます。 MySQL、PHPともに初心者です。 MAMPを使用しています。 ローカルではほぼ問題無く動作していたphpファイルをウェブ上にアップロードしたところ、以下のようなエラーが出てしまいました。 Warning: mysql_connect() [function.mysql-connect]: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in~ ネットやこちらの過去ログで調べたところMAMP使用下ではよくあるエラーらしく解決法も載っていたのですが、どれを試してもなぜかエラーが消えてくれません。 ソケットもMySQLサーバー側とクライアント側で同じもの(/Applications/MAMP/tmp/mysql/mysql.sock)を参照していると思うのですが・・・ php.iniの中でも、 mysql.default_socket = /Applications/MAMP/tmp/mysql/mysql.sock と指定されてあります。 何か他に原因があるのでしょうか。 ド素人のため質問がすでにおかしいかもしれませんが、お知恵をお貸しください。 よろしくお願い致します。

    • ベストアンサー
    • MySQL
  • CakePHP2 のsaveができない

    CakePHP2.何かを使っています。 ローカル環境でxampp、windows7で開発しています。 なぜかある特定のコントローラーでsaveができず、 Googleで見つけた様々な解決方法を全て試してもダメでした。 コントローラー:PaypalsController.php モデル:Paypal.php テーブル名:paypals コントローラー内で $this->Paypal->save($data); すると The eventKey variable is required An Internal Error Has Occurred のようなエラーが出ます。 キャッシュの問題であるデバッグモードも2になっています。 また、命名規則に沿っているのですが、 モデル内に、 public $useTable = 'paypals'; を書かないと、 Missing Database Table のエラーも出ます。 この時点で何かおかしい気がします。 どのような原因が考えられるか分かる方いたらアドバイス下さい。

    • ベストアンサー
    • PHP
  • IISでcakePHP

    現在IIS上でcakePHPを利用してPHPのwebアプリを作成しています。 事情によりrewriteは行わずに作成しているのですが、 URLを指定すると404エラーが返ってきます。 URLは以下です。 http://localhost/test/index.php/posts/index cakePHPはinetpub/wwwroot/test/直下に配置しています。 http://localhost/test/index.php の画面は見れています。 IISでrewriteをせずcakePHPの画面が見れる方法をご存知の方がいましたらご教授願います。 ●環境 windows XP Professional sp3 IIS 5.1 PHP 5.3.5 CakePHP 2.2.2

    • ベストアンサー
    • PHP
  • cakephp HTTP403エラー

    初心者ですが、レンタルサーバーを変更し、cakephpを利用している既存のデータ等をそのまま新しいサーバーに移動したのですが、URL:hhtp://www.○○○.jpでHTTP403のエラーが出てしまいます。 但し、URL:hhtp://www.○○○.jp/cakephp/ ではエラーは出ず、レイアウトがズレて表示されます。(CSSのパスの原因で)。またデータベースのデータも表示されます。 CAKEPHPはドメイン直下に配置し、webrootもフォルダ内にあります。 レンタルサーバのため、apacheの編集もできません。(ディレクトリの変更などもできません) いろいろ調べて、cakephp内の3つの「.htaccess」のmod_rewrite、app/temp/のパーミッション等の変更も試しましたが、うまくいきません。 HTTP403のエラーの回避方法を教えてください。よろしくお願いいたします。 ・APACHE :2.x ・PHP    :5.3 ・MYSQL  :5.1

  • CakePHPのブログチュートリアルについて

    PHPフレームワークのCakeについて、質問させてください。 初心者ならだれもが一度は試すであろうhttp://book.cakephp.org/ja/view/219/Blogに掲載されているブログチュートリアルですが、下記環境で実行すると大量のエラーが出力されます。(添付画像参照) 環境:hetemlレンタルサーバー Apache 2.0.xx ver 4.4.2 ※CakePHPのトップページが正常に表示されること、tmpフォルダのパーミッションは正常に設定されていることは確認しています。 また、Viewで正常にデータを取得できているにもかかわらずデータ表示部分でエラーが表示されるため、変数$postsをvar_dumpしたところ、 Array ( [0] => Array ( [id] => Array ( [id] => 1 ) [title] => Array ( [title] => タイトル ) [body] => Array ( [body] => これは、記事の本文です。 ) [created] => Array ( [created] => 2009-08-08 21:56:50 ) [modified] => Array ( [modified] => ) ) [1] => Array ( [id] => Array ( [id] => 2 ) [title] => Array ( [title] => またタイトル ) [body] => Array ( [body] => そこに本文が続きます。 ) [created] => Array ( [created] => 2009-08-08 21:56:50 ) [modified] => Array ( [modified] => ) ) [2] => Array ( [id] => Array ( [id] => 3 ) [title] => Array ( [title] => タイトルの逆襲 ) [body] => Array ( [body] => こりゃ本当に面白そう!うそ。 ) [created] => Array ( [created] => 2009-08-08 21:56:50 ) [modified] => Array ( [modified] => ) ) ) となっていました。 これでは、チュートリアルに掲載されている、 <?php echo $post['Post']['id']; ?> ではなく、 <?php echo $post['id']['id']; ?> で呼び出さなくてはならなくなります。 これはどこかがおかしいのでしょうか?教えてください。

    • 締切済み
    • PHP