質問

私は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
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top