2012-02-23 8 views
2

일부 PHP 코드를 Mysqli에서 PDO로 변환하려고하는데 PDO MySQL 연결 (응용 프로그램 코드 외부)의 기본 호스트를 설정할 수 있어야합니다.PDO 기본 호스트를 설정하는 방법은 무엇입니까?

mysqli.default_host = ip.of.mysql.server 

를 그리고 연결 : Mysqli와

, 나는 php.ini 설정으로이 작업을 수행 할 수

$link = mysqli_connect(null, USERNAME, PASSWORD, DATABASE); 

그것은 우리를 위해 아름다운 일입니다.


PDO에 대한 동등한 코드 :

$link = new PDO('mysql:dbname=' . DATABASE, USERNAME, PASSWORD); 

이 같은 방식으로 작동하지 않습니다. 그것은 내 MySQL 서버가 localhost 상에있는 한 작동합니다. 그렇지 않습니다. 내 MySQL 서버를 호스팅하는 별도의 컴퓨터가 있습니다.

PDO에 필요한 것을 달성 할 수있는 동일한 php.ini 설정이 있습니까? 내가 찾은 가장 가까운 것은 pdo_mysql.default_socket 설정이지만, 그렇게 할 것이라고는 생각하지 않습니다.

+1

호스트를 사용하고 호스트 파일에서 IP 주소를 변경할 수 있습니다. 이는 애플리케이션 코드 외부입니다. –

+0

나에게 조금 해킹 된 것 같지만, 공식적인 방법이 없다면 아마 그걸로 갈 것입니다. –

답변

2

가 포함 된 파일을 가리키는. php.ini 파일에서

:

pdo.dsn.mydb="mysql:dbname=testdb;host=localhost" 

PHP에서 :

$dbh = new PDO('mydb', $user, $password); 

는 다른 방법으로는 호스트를 사용하여 호스트 파일에 IP 주소를 변경할 수 있습니다. 이는 애플리케이션 코드 외부입니다.

+0

"호스트 파일의 IP 주소를 변경하십시오"라는 말은'localhost'가 로컬 시스템이 아닌 다른 것을 가리키고 있다는 것을 의미합니까? – KingCrunch

+0

그는 내가 localhost가 아닌 다른 도메인을 사용하고 싶다고 생각했습니다. –

+0

예,'localhost'가 아닌 실제 호스트 이름을 사용하십시오. localhost에 대한 IP를 변경하면 혼란 스럽습니다. :) –

1

소켓 연결은 로컬 연결에서만 유용합니다. 난 당신이 DSN에 대한 별명을 정의 할 수 있습니다 볼 수 있듯이 지금까지 그냥 발견 뭔가

http://php.net/pdo.configuration

: 당신은 호스트에게 명시 적으로

mysql:host=123.123.123.1;dbname=MyDb 

업데이트를 지정해야합니다. 내가 직접 시도하지 않은,하지만

pdo.dsn.otherServer = mysql:host=example.com;dbname=foo 

과 같아야합니다 그리고 당신은, 당신은 생성자 인수로 파일 경로를 제공 할 수 있습니다 PDO::__construct()

$pdo = new PDO('otherServer', $x, $y); 

추가에서 사용할 수 있어야합니다 php.ini 파일에서 PDO documentation, you can set pdo.dsn 별명에 따르면 DSN 문자열

$pdo = new PDO('uri:file///usr/share/connection.dsn', $x, $y); 
// With file /usr/share/connection.dsn that contains: (and nothing more than) 
mysql:host=example.com;dbname=foo 
+0

그건 내가 생각한거야. 호스트를 명시 적으로 제공 할 수 있다는 것을 알고 있습니다. 내가 찾고있는 것은 Mysqli라는 애플리케이션 코드 외부의 기본 호스트를 설정하는 방법이다. 나는 이것이 가능할 것을 정말로 희망하고있다. –

+0

편집 관련 : 그건 완벽합니다! 나는 그것을 지금 시험 할 것이다. –

+0

해야 할 말 : 전에는 깨닫지 못했습니다. 나에게도 아주 멋지게 들립니다 :) 응용 프로그램에서 데이터베이스 (구성)를 분리하고 직접 환경에 바인딩 할 수 있습니다. – KingCrunch

관련 문제