문제

최근에 Zend 프레임 워크를 사용하기 시작했습니다. 로컬 XAMPP 서버에서 개발을 시작했지만 1AND1 계정에 업로드했을 때 다음과 같은 오류가 계속됩니다.

메시지 : sqlstate [hy000] [2002] 소켓 '/var/run/mysqld/mysqld.sock'(2)를 통해 로컬 MySQL 서버에 연결할 수 없습니다.

Application.ini 파일의 resources.db.params.unix_socket 줄을 phpinfo에서 언급했지만 성공하지 못했습니다. 나는 찾았다 여기 누군가 대답했다

MySQL 서버는 웹 응용 프로그램과 동일한 호스트에 있습니까? 그렇지 않은 경우 소켓 연결을 사용할 수 없으며 TCP를 통해 연결해야합니다.

내 웹 호스트의 경우라고 생각합니다. 대신 TCP를 통해 ZF를 연결하려면 어떻게해야합니까? 현재 PDO_MYSQL을 사용하고 있습니다.

도움이 되었습니까?

해결책 2

나는 줄을 떠났다 :

defined('APPLICATION_ENV')
    || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'development'));

내 인덱스.

SetEnv APPLICATION_ENV production

.htaccess가 읽지 않은 것 같습니다. INDEX.PHP의 다른 명령문을 프로덕션 데이터베이스 설정을 사용하기 위해 '프로덕션'으로 변경했으며 작동했습니다. 꽤 실망 스럽습니다. 환경 변수가 왜 읽지 않았는지 궁금합니다. 당신의 도움을 주셔서 감사합니다.

다른 팁

MySQL에 연결하는 방법은 전달하는 매개 변수에 따라 다릅니다. mysql_connect (). 파일 경로를 전달하면 (즉). /var/run/mysqld/mysqld.sock, 소켓 연결을 시도 할 것입니다. 호스트 이름을 전달하면 TCP 연결을 시도합니다.

MySQL 서버의 호스트 이름 (또는 IP)을 찾아서 다음과 같이 연결해야합니다.

mysql_connect('127.0.0.1:3306',$username,$password);

배당률은 ZF에 대한 것입니다. 데이터베이스 설정을 저장하는 구성 파일 또는 데이터베이스를 사용하여 데이터베이스에 연결할 때이를 지정할 수 있습니다. host 환경:

$db = new Zend_Db_Adapter_Pdo_Mysql(array(
    'host'     => '127.0.0.1',
    'username' => 'webuser',
    'password' => 'xxxxxxxx',
    'dbname'   => 'test'
));

편집하다: 만약 너라면 ~이다 적절한 호스트 이름/포트를 호스트 매개 변수로 전달합니다. mysql_connect() 이 메시지를 받으면 서버 구성 문제 일 가능성이 높습니다.

조정해보십시오 mysql.default_socket php.ini 또는 사용을 사용하여 응용 프로그램 코드의 상단에 설정 ini_set ()

ini_set('mysql.default_socket','/path/to/real/socket.sock');

소켓 파일이 어디에 있는지 알아 내야합니다. 종종 '/var/lib/mysql/mysql.sock'이지만 시스템 의존이라고 생각합니다.

Zend Framework는 DB Params에 옵션이 있습니다 unix_socket, 간단히 사용하십시오

 $config= array(
 'db' => array(
'host'   => 'localhost',
'username' => 'user',
'password' => 'pass',
'dbname' => 'dbname',
'dbprefix' => '',
'unix_socket' => '/var/lib/mysqld/mysqld.sock'
  )
);
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top