CakePHP : MySQL 데이터베이스에 액세스 할 수 없습니다
-
06-07-2019 - |
문제
저는 CakePHP를 처음 사용하고 구성 프로세스를 진행하고 있지만 Cake가 MySQL 데이터베이스에 액세스 할 수없는 이유가 있습니다. 케이크 정보 페이지에 따르면 내 TMP 디렉토리는 쓰기 가능하고 파일 엔진이 캐싱에 사용되고 있으며 (이를 의미하는지 모르겠다), 데이터베이스 구성 파일이 존재하지만 CakePHP는 데이터베이스에 연결할 수 없습니다.
내 설정 세부 사항은 다음과 같습니다.
- PHP 5.3 (스노우 레오파드에 사전 설치)
- 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
그리고
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