Php 多个@fopen不工作CI

Php 多个@fopen不工作CI,php,codeigniter,Php,Codeigniter,我在codeigniter中的模型中有一个函数,它获取数据库的模板,因此当我填写表单并单击submit按钮时,它会将输入保存到codeigniter中的database.php文件中 我无法让两个@fopen正常工作。当我再添加一个位置时,a将清除我试图写入的文件中的所有数据 public function load_app_ins() { $template = file_get_contents(APPPATH . 'modules/install/config/database.php')

我在codeigniter中的模型中有一个函数,它获取数据库的模板,因此当我填写表单并单击submit按钮时,它会将输入保存到codeigniter中的database.php文件中

我无法让两个@fopen正常工作。当我再添加一个位置时,a将清除我试图写入的文件中的所有数据

public function load_app_ins() {
$template = file_get_contents(APPPATH . 'modules/install/config/database.php');

$replace = array(
'HOSTNAME' => $this->input->post('hostname'),
'USERNAME' => $this->input->post('username'),
'PASSWORD' => $this->input->post('password'),
'DATABASE' => $this->input->post('database'),
'DBDRIVER' => $this->input->post('dbdriver'),
'DBPREFIX' => $this->input->post('dbprefix')
);    

$template = str_replace(array_keys($replace), $replace, $template);

// Trying To Get Main Directory APPLICATION Not Load Clears Data Should Load 
$file = @fopen(dirname(FCPATH) . '/application/config/database.php', 'w+'); 

// This Location Works OK From Install Directory
$file = @fopen(APPPATH . 'config/database.php', 'w+');

if ($file !== false) {           
$response = @fwrite($file, $template);
fclose($file);
if ($response) {
return true;
} else {
echo 'Error when process'; die;
}
}

我阅读了更多关于codeigniter用户指南的内容,并发现有更简单的方法。写_文件现在好多了

unset($this->db);

$dsn = $this->input->post('db_driver').$this->input->post('db_username').':'. $this->input->post('db_password').'@'.$this->input->post('db_hostname').'/'.$this->input->post('db_database');

if (is_resource($this->db->conn_id) OR is_object($this->db->conn_id)) {

$data = array();
$data['db_hostname']    = $this->input->post('db_hostname');
$data['db_username']    = $this->input->post('db_username');
$data['db_password']    = $this->input->post('db_password');
$data['db_database']    = $this->input->post('db_database');
$data['db_driver']  = $this->input->post('db_driver');
$data['db_prefix']  = $this->input->post('db_prefix');

$get_template_file_contents  = $this->load->view('template/configuration/database.php', $data, true);
write_file(APPPATH . 'config/database.php', $get_template_file_contents, 'r+');
write_file(dirname(FCPATH) . '/admin/application/config/database.php', $get_template_file_contents, 'r+');
write_file(dirname(FCPATH) . '/catalog/application/config/database.php', $get_template_file_contents, 'r+');

redirect('setup/step_4');
}

新文件将覆盖第一个文件。尝试为第二个文件指定不同的名称或使用文件内容(APPPATH.'modules/install/config/database.php',$template);完成第一个文件后,对于codeigniterok,database.php必须保持不变。关键是每次加载文件时都会覆盖模板变量。你必须想办法绕过它。顺便说一句,如果您只想向文件中添加数据,请尝试使用“a”字符或“w+”;是的,我只需要复制函数并重命名它,但我想我可以一次完成它。