CakePHP:MySQLデータベースにアクセスできません
-
06-07-2019 - |
質問
私はCakePHPを初めて使用し、設定プロセスを実行していますが、CakeがMySQLデータベースにアクセスできない理由に困惑しています。 Cakeの情報ページには、tmpディレクトリが書き込み可能で、FileEngineがキャッシュに使用され(これが何を意味するのかわからない)、データベース構成ファイルは存在しますが、CakePHPはデータベースに接続できません。
セットアップの詳細は次のとおりです。
- PHP 5.3(Snow Leopardにプリインストール)
- MySQL 5.1.40 64ビット
- CakePHP 1.2.4.8284
これまでの手順は次のとおりです。
- cake_blogというMySQLスキーマを作成しました
- cake_blog_userというMySQLユーザーを作成しました
- cake_blog_userにcake_blog @ localhostおよびcake_blog @%の適切な権限を付与しました
- database.php.defaultファイルをdatabase.phpにコピーし、必要に応じてデータベース接続の詳細を編集しました
これは、database.phpからの関連する構成データです。
var $default = array( 'driver' => 'mysql', 'persistent' => false, 'host' => 'localhost', 'login' => 'cake_blog_user', 'password' => 'cake_blog_password', 'database' => 'cake_blog', 'prefix' => '', );
ここに何か足りないのですか?また、データベース接続をテストする直前に echo mysql_error();
を/cake/libs/view/pages/home.ctpファイルに挿入すると、表示されるエラーは"そのようなファイルまたはディレクトリはありません。"それが何のファイルやディレクトリなのかわからない。
ありがとう!
解決
ソケットの場合は、/ etc / php.iniを編集して次を反映します
pdo_mysql.default_socket=/tmp/mysql.sock
and
mysql.default_socket = /tmp/mysql.sock
他のヒント
通常は、MySQLが「localhost」を「unixソケットを介して接続」および「127.0.0.1」「TCPポートを介して接続」と見なしていることを痛感します。 XAMPP(少なくともMacの場合)のようなものでは、Unixソケットファイルはありません。 代わりに127.0.0.1を使用します。
var $default = array(
'driver' => 'mysql',
'persistent' => false,
'host' => '127.0.0.1',
'login' => 'cake_blog_user',
'password' => 'cake_blog_password',
'database' => 'cake_blog',
'prefix' => '',
);
常に動作するはずです。
次のこともできると思います
<?php
public $default = array(
'driver' => 'mysql',
'persistent' => false,
'host' => 'localhost',
'login' => 'cake_blog_user',
'password' => 'cake_blog_password',
'database' => 'cake_blog',
'prefix' => '',
'port' => '/tmp/mysql.sock',
)
?>
これを行うと、実稼働サーバーで稼働するときにdatabase.phpファイルを編集する必要がある場合があります。
私を正しい方向に向けてくれてありがとう。 mysql.sockファイルは、 /var/mysql/mysql.sock
のデフォルトの場所ではなく、 /tmp/mysql.sock
に移動されました。これを反映するためにphp.iniファイルを編集すると、問題が修正されました。
phpinfoを確認し、リストされているソケットを使用します。それは私のために働いた。
Ubuntuでは、PHPバージョン7.0と5.6の両方をインストールした場合、これは機能しません。
両方のバージョンがある場合は切り替える必要があります:
7.0バージョンの場合、最初に見てください:コマンドは php -v
です。
次の操作
sudo a2dismod php7.0
sudo a2enmod php5.6
sudo service apache2 restart