2013-06-27 1 views
1

스파게티 코드 PHP 응용 프로그램을 Codeigniter 프레임 워크로 리팩토링하고 있으며 응용 프로그램의 개발 버전이 프로덕션 데이터베이스와 다른 서버에 있습니다. 테스트를 위해 프로덕션 데이터베이스에 개발 버전을 호스팅 할 EC2 인스턴스에서 ssh 터널을 설정하고 싶습니다. libssh2와 phpseclib (http://phpseclib.sourceforge.net/)을 통해 원격 서버와 ssh 연결을 성공적으로 만들었습니다. 그러나 ssh 터널이 설정된 후에는 codeigniter mysqli db 드라이버를 사용하여 데이터베이스에 연결할 수 없습니다. PHP/Codeigniter 애플리케이션을 SSH 터널을 통해 원격 MySQL 데이터베이스에 어떻게 연결할 수 있습니까?

수 없습니다

가 제공하는 설정을 사용하여 데이터베이스 서버에 연결 : 데이터베이스에 연결하는 모든 시도와

, 나는 다음과 같은 오류가 발생합니다. 파일명 : 코어/MY_Controller.php 행 번호 다음 MY_Controller 코드

6 :

1 <?php defined('BASEPATH') OR exit('No direct script access allowed'); 
2 
3 class MY_Controller extends CI_Controller { 
4 
5 public function __construct() { 
6  parent::__construct(); 
7  $this->auth = new stdClass; 
8  $this->load->library('flexi_auth'); 
9  if (!$this->flexi_auth->is_logged_in()) { 
10   header('Location: /login'); 
11  } 
12 } 

는 I는 mysqli real_connect 함수로의 파라미터로서 터널 객체를 포함하는 mysqli 드라이버를 수정 다음은 아무 소용이 없다. 아무도 내가이 일을 어떻게 할 수 있는지 안다?

도움을 주셔서 감사합니다. 마이크

+0

Er - 개발 시스템을 프로덕션 데이터베이스에 연결 하시겠습니까? 개발 시스템에서 프로덕션 데이터베이스를 더 잘 복제 할 수 있습니다. –

+0

프로덕션 데이터베이스는 1TB +이며 프로덕션 데이터베이스를 개발 서버에서 복제하는 데 엄청난 노력이 필요합니다. 귀하의주의를 고맙게 생각하지만, 그 문제를 제외하고는 가능성에 대해 궁금합니다. - ssh를 통해 원격 개발 데이터베이스에 연결하거나 프로덕션 데이터베이스에 원격으로 터널링 할 프로덕션 응용 프로그램을 원할 경우,이를 만들 수있는 방법이 있습니까? 작업? 당신의 생각에 감사드립니다! – semanticMike

답변

0

은 내 첫 번째 시도는이 같은 ssh 터널을 만들 수있을 거라고 생각 :

my_dev_ec2# ssh -L 3306:localhost:3306 [email protected]_production_ec2 

그리고 그것은 생산 인스턴스에있는 것처럼 localhost에 연결 mysqli의 DB를 config (설정).

+0

응답 해 주셔서 감사합니다. 나는 프로그램이 실제로 libssh2와 phpseclib 모두와 함께 할 수있는 연결을 설정하는 것을 선호 할 것이다. 그러나 Codeigniter mysqli 데이터베이스 드라이버는 인수로 ssh_tunnel 객체를 수락하도록 수정 한 경우에도 연결하지 않습니다. – semanticMike

관련 문제