我正在将一个意大利面代码PHP应用程序重构到Codeigniter框架中,并且该应用程序的开发版本位于与生产数据库不同的服务器上。对于测试,我想从我的EC2实例中建立一个ssh隧道,在这里我将开发版托管到生产数据库。我通过libssh2和phpseclib(http://phpseclib.sourceforge.net/)成功创建了与远程服务器的ssh连接。但是,在建立了ssh隧道之后,我无法使用codeigniter mysqli db驱动程序连接到数据库。如何通过SSH隧道将PHP/Codeigniter应用程序连接到远程MySQL数据库?
随着每一个试图连接到数据库中,我得到以下错误:
无法使用提供的设置连接到你的数据库服务器。 文件名:芯/ MY_Controller.php 行号:6
的MY_Controller代码是:
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 }
我已修改的mysqli驱动器以包括隧道对象作为库MySQLi real_connect函数作为参数跟着,无济于事。有谁知道我该如何做这项工作?
非常感谢您的帮助!
迈克
呃 - 你是否确定要将开发系统连接到生产数据库?您最好在开发系统上复制生产数据库。 – 2013-06-27 01:15:42
生产数据库为1TB +,在开发服务器上复制生产数据库将是一项巨大的工作。我很感激你的警惕,但我对这个问题以外的可能性感到好奇 - 如果我通过SSH连接到远程开发数据库,或者我希望生产应用程序远程连接到生产数据库,是否有办法使它工作?谢谢你的想法! – semanticMike