我正在开发一个基于 Zend 1.12 的项目。有一个新要求,我们必须对所有文件进行编码以防止黑客入侵。我们使用了 ioncube 编码器,它对所有的 .php 文件进行编码,但不是在 application.ini 中存储数据库信息用户名、密码、密钥等。有两种方法:
1) 将配置驻留在 .php 文件中,例如 config.php 而不是 application.ini
2)有ioncube编码application.ini
通过第一种方法,我发现Zend Config Introduction 可以将配置存储在数组中。我需要一个在 Bootstrap.php 中设置的具体示例,它可以利用这些配置。现在我们所有的模型都从 Zend_Db_Table_Abstract 扩展而来。当我将所有 application.ini db 配置迁移到 config.php 时,我真的希望所有 db 操作都能正常工作,并且前端控制器中有几个实例使用 $this->applicationOptions。我希望我的推杆配置也能正常工作。请帮忙
使用第二种方法,我没有发现 ioncube 能够对 application.ini 进行编码的分辨率
这是我的配置文件
返回 $configArray = 数组(
'db' => array( 'adapter' => 'pdo_mysql', 'params' => array( 'host' => 'localhost', 'username' => 'root', 'password' => 'root', 'dbname' => 'test' ) ) );
当我在 Bootstrap.php 中执行此操作时,它可以工作
$config = new Zend_Config(require APPLICATION_PATH .'/configs/config.php'); $db = Zend_Db::factory($config->db->adapter, $config->dv->params->toArray()); $db = Zend_Db::factory($config->db); Zend_Db_Table::setDefaultAdapter($db);
但是当我这样做的时候
protected function _initDatabase(){ $config = new Zend_Config(require APPLICATION_PATH .'/configs/config.php'); $resource = $this->getPluginResource('db'); var_dump($this->getPluginResource('db')); // this will be null.
我的问题是我是否应该在配置中做任何不同的事情,这样它就会模仿 resources.db.adapter、resources.db.params.host 等,它会被 pluginResources 或 getoptions 接收