Intereting Posts

CakePHP: не удается получить доступ к базе данных MySQL

Я новичок в CakePHP и просто просматриваю процесс настройки, но я не понимаю, почему Cake не может получить доступ к моей базе данных MySQL. На странице с информацией о торгах указано, что мой каталог tmp доступен для записи, FileEngine используется для кэширования (не знаю, что это значит), и мой файл конфигурации базы данных присутствует, но CakePHP не может подключиться к базе данных.

Вот мои настройки:

  • PHP 5.3 (предварительно установленный на Snow Leopard)
  • MySQL 5.1.40 64-разрядный
  • CakePHP 1.2.4.8284

Вот шаги, которые я прошел:

  • Создана MySQL-схема cake_blog
  • Создал пользователя MySQL cake_blog_user
  • Предоставил cake_blog_user соответствующие разрешения для cake_blog @ localhost и cake_blog @%
  • Скопировал файл database.php.default в базу данных.php и, в случае необходимости, отредактировал данные о подключении к базе данных

Вот соответствующие данные конфигурации из database.php:

     var $ default = массив (
         '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 

а также

 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 был перемещен в /tmp/mysql.sock вместо его местоположения по умолчанию в /var/mysql/mysql.sock . Редактирование файла php.ini, чтобы отразить это, устранило проблему.

проверьте свой phpinfo и используйте указанный сокет. это сработало для меня.

На Ubuntu, если вы установили версии 7.0 и 5.6 PHP, это не сработает.

Вам нужно будет переключиться, если у вас есть обе версии:

Посмотрите сначала, если версия 7.0: команда php -v .

Затем сделайте

 sudo a2dismod php7.0 sudo a2enmod php5.6 sudo service apache2 restart