Я новичок в CakePHP и просто просматриваю процесс настройки, но я не понимаю, почему Cake не может получить доступ к моей базе данных MySQL. На странице с информацией о торгах указано, что мой каталог tmp доступен для записи, FileEngine используется для кэширования (не знаю, что это значит), и мой файл конфигурации базы данных присутствует, но CakePHP не может подключиться к базе данных.
Вот мои настройки:
Вот шаги, которые я прошел:
Вот соответствующие данные конфигурации из 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