문제

저는 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
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top