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

このQ&Aのポイント
  • CakePHP2.4.10のdatabase.phpの設定についてお聞きします。
  • MAMPを使用していますが、エラーが出ています。どうすればよいのでしょうか?
  • 以下のサイトを参考に設定を変更してみましたが、エラーは解消されません。どうすればよいのでしょうか?
回答を見る
  • ベストアンサー

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
  • 回答数2
  • ありがとう数7

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

  • ベストアンサー
  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.2

うーん。database.phpを設置したにも関わらず 「CakePHP is NOT able to connect to the database.」 が出るんならやっぱりdatabase.phpの設置ミスか中身のミスかなぁ。 MySQLの待ち受けやポート開放、ならびにPHPにmysql接続機能が入っているかは phpMyAdminが出来ていることから問題ないと思われる。 > cakephpがmini_bbsへの読み書きが本当にできるようになっているかどうかを > 確認する方法を教えていただければ幸いです。 それは普通にphpMyAdminでcakephpユーザでログインしてみればいいです。 少なくとも読み込めるならばログイン後のデータベースツリー一覧に出てきます。 書き込みできるかは実際にCREATE TABLEとかしてみないと駄目かも。 閑話休題。 今ちらっとぐぐってみたらPHPにpdoエクステンションが無い状態もこのエラーが表示されるらしいかも? こちら(「Mac PHP PDO」とかでぐぐるとか)でも情報を集めてみるといいかも。 この辺の説明しとくと、PHPにはMySQLに接続するために主に3つの手段がある。 mysqlエクステンションとmysqliエクステンションとpdo_mysqlドライバーだ。 このうち、phpMyAdminはmysqlエクステンションを用いるので、 上でphpMyAdminで繋げられてるから接続は問題ないはずという根拠は崩れる事になる。 mysqlエクステンションが入っててpdoエクステンションとpdo_mysqlドライバーが入ってないという可能性があるからだ。

その他の回答 (1)

  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.1

> CakePHP is NOT able to connect to the database. これはCakePHPがMySQLを見つけることができない(つまり、接続できた後にユーザー名やパスワードが間違っているわけでもユーザーがデータベースにアクセス権限がないのでもない)のでdatabase.phpを設置する前だったらうなずける動作だ。 > それでもエラーは消えないです。 database.phpを設置したにも関わらず、「同じエラーが出る」のか、「とにかくまだ正常じゃないけどエラーメッセージは変わった」なのかを教えて貰えないか? それが同じままならdatabase.phpの設置方法が悪い、database.phpの中身を書き換えたけどコメントアウトされている、などが考えられる。 エラーが「認証できません」とか「アクセス権限がありません」とかだったらMySQL側な感じだ。ユーザー名とパスワードの組があっているか、ユーザーcakephpがデータベースmini_bbsを読み書きできるか確認しよう。

krkrtk
質問者

お礼

ありがとうございます。 php -mコマンドで、拡張モジュールを確認したところ、PDOモジュールは入っていて、「???」となっていました…。 改めてdatabase.phpをFinderで検索してみたところ、内容がデフォルト値に設定されているものを発見しました。 どうやら、違う場所のdatabase.phpをいっしょうけんめい変更していたようです(アホ!)。 しかし、ユーザ設定も違っていたようなので、ご指摘いただいて本当に助かりました。 ありがとうございます!

krkrtk
質問者

補足

ていねいなご回答、痛み入ります。 database.php設置後は同じエラーが出ます。 ユーザcakephpがデータベースmini_bbsの読み書きができるかどうか、というところが怪しいかもしれません。 なので、「データベースに固有の特権」の項目に「mini_bbs」を追加し、特権をALL PRIVILEGESとしました。 しかし、エラーメッセージは変わらず…。 恐縮ですが、cakephpがmini_bbsへの読み書きが本当にできるようになっているかどうかを確認する方法を教えていただければ幸いです。

関連するQ&A

  • 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
  • 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
  • さくら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 -------------

  • 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:routes.phpの設定方法

    アドレスを短縮したいため、CAKEPHP:routes.phpにて設定を行いました。 ・通常のアドレス   :http://XXXXX.jp/logins/login/ ・短縮したいアドレス :http://XXXXX.jp/i →routes.phpに以下を設定することで、実現できました。  Router::connect('/i', array('controller' => 'logins', 'action' => 'login')); 但し、「logins/login/」は「パラメータを付けても付けなくても」アクセスできる仕組みになっており、 ・通常のアドレス   :http://XXXXX.jp/logins/login/param ・短縮したいアドレス :http://XXXXX.jp/i/param というアクセスも可能にしたいのですが、routes.phpにどのように設定すれば実現できるのでしょうか?

    • ベストアンサー
    • PHP
  • cakePHP導入 XREA+について

    同じタイトルの質問から、検索して辿り着いたURL http://massat.jp/2007/01/08/110 を参考にXrea+ (有料版)の設定をしています。 しかし、動いてなさげです。 ディレクトリツリー: root / この直下に、cakephpをインストールしました。 次に、 mv -r root/cakephp/app/webroot/* root/public_html/dev.hoge.com/. でファイルを移動。 移動先のdev.hoge.com/index.phpを、 if (!defined('ROOT')) { define('ROOT', DS.'cakephp'); } /** * The actual directory name for the "app". * */ if (!defined('APP_DIR')) { define('APP_DIR', 'app'); } /** * The absolute path to the "cake" directory, WITHOUT a trailing DS. * */ if (!defined('CAKE_CORE_INCLUDE_PATH')) { define('CAKE_CORE_INCLUDE_PATH', ROOT); } と、編集しました。 これでいい筈なので、一緒にパッケージれていたtest.phpも、同じ内容で編集しました。 test.phpを実行させると、次のエラーが出ます。 Warning: set_time_limit() [function.set-time-limit]: Cannot set time limit in safe mode in /virtual/taokato/public_html/dev.bit-station.com/test.php on line 27 Warning: include(cake/bootstrap.php) [function.include]: failed to open stream: No such file or directory in /virtual/taokato/public_html/dev.bit-station.com/test.php on line 84 Warning: include() [function.include]: Failed opening 'cake/bootstrap.php' for inclusion (include_path='/cakephp:/cakephp/app/:.:/usr/local/lib/php') in /virtual/taokato/public_html/dev.bit-station.com/test.php on line 84 Fatal error: CakePHP core could not be found. Check the value of CAKE_CORE_INCLUDE_PATH in APP/webroot/index.php. It should point to the directory containing your /cake core directory and your /vendors root directory. in /virtual/taokato/public_html/dev.bit-station.com/test.php on line 85 これは、設定ミスをしているのでしょうか? 解説通りにしたはずなんですけど・・・。 参考にしたURL http://oshiete1.goo.ne.jp/qa5421358.html http://www.wakatta-blog.com/cakephpxrea.html http://www.cakephp.jp/doc/ch03s04.html#id4797748 http://massat.jp/2007/01/08/110 ご教示のほど、よろしくお願いします。

    • 締切済み
    • PHP
  • CakePHPでディレクトリ分けをしたい

    CakePHP2.3.4、サーバーはロリポップにて開発を行っております。 やりたいことは、コントローラーのディレクトリ分けです。 以下のようなディレクトリ構造にして、 app  |_Controller  |   |_admin  |    |    |_LoginController.php  ※メソッドはindex()のみと仮定  |    |    |_・・・.php  |    |  |    |_ListController.php  ※メソッドはindex()のみと仮定  |  |_View ※Viewも分けますが、今は省略しています。 アプリケーション「LoginCntroller.php」にアクセスする場合は http://○○.ne.jp/admin/login/index アプリケーション「ListController.php」にアクセスする場合は http://○○.ne.jp/list/index でアクセスしたいです。 自分なりに調べて、「bootstrap.php」に以下追加、 App::build(array(  'Controller' => array(ROOT.DS.APP_DIR.DS.'Controllers'.DS.'Admin'.DS,) )); 「route.php」に以下追加、 Router::connect('/admin/login', array('controller' => 'login', 'action' => 'index')); などと行ってみてはいるのですが、結果、以下のエラーになってしまいます。 Missing Controller Error: AdminController could not be found. Error: Create the class AdminController below in file: app/Controller/AdminController.php <?php class AdminController extends AppController { } Controller直下に配置したアプリケーションに関しては問題なく実行されます。 何が悪いのか見当もつかず困っております。 よろしければご教授いただけませんでしょうか。

    • 締切済み
    • 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のファイルを置く場所がいけないのでしょうか? それとも、設定で何か不備があるのでしょうか?? お分かりになられる方、いらっしゃいましたらご教授のほどお願い致します。

  • データベースが導入出来ません

    @niftyのサーバlacoocanでhome-pageを動かしています。 このサーバにあるサービスのデータベース管理ソフトphpMyAdmin 2.8.1を 導入しようとして、導入案内 http://lacoocan.nifty.com/webapps/phpmyadmin/index.htm の通りにconfig.inc.phpを修正、ffftpでアップ後、URLアクセスすると 接続を拒否されました で エラーです。 MySQLのメッセージは #2002 - サーバーが反応しません。 (または、ローカルの MySQL サーバーのソケットは正確に設定されません) 新しい phpMyAdmin のウィンドウを開く と出てきます。同社のHPから#2002を調べると Error: 2002 (CR_CONNECTION_ERROR) Message: Can't connect to local MySQL server through socket '%s' (%d) とありました。 config.inc.phpの6カ所の修正箇所を確認しましたが間違いないようです。 多分config.inc.phpの修正ミスとは思いますが、 何度checkしてもミスを発見出来ません。  何処をcheckしたら良いでしょう。  @niftyは phpMyAdminの設置・利用に関してはサポートいたしませんと取り合ってくれません。  当方全くの素人です。OSはwindows xpです。宜しくお願いします。  

  • 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

専門家に質問してみよう