Intereting Posts
Многомерный массив PHP из результатов базы данных Как использовать «Простой доступ API для доступа к Google» для доступа к информации Календаря Google (PHP)? Введите ключ для отправки формы Ajax Как получить данные из базы данных через jquery? Как автоматически обновить таблицу, когда другая таблица обновляется на другом сервере mysql? Запрос MySQL с несколькими операциями «OR» как пройти поездку на php.ini Regex / code для исправления поврежденных сериализованных данных PHP Частичный черный фон, когда водяной знак PNG-изображения с GD PHP Как взять SMS и позвонить, чтобы предупредить кого-то, исходя из того, что говорит СМС? Проблемы с PHP-переменными в javascript Получите подсчет недавно опубликованного продукта (сегодня) в WooCommerce Лицензирование версий Symfony2 по файлам MODx :: Получить идентификатор сеанса, установленный MODx для использования в модуле Как выполнить правильную сдвиг без изменений в PHP?

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