Zend 프레임 워크와 MySQL 소켓을 통해 연결
-
22-07-2019 - |
문제
최근에 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'
)
);