Codeigniter使用外部文件替换database.php

我有两个使用codeigniter的网站,使用相同的数据库配置(主机名,用户名,密码),只是想 询问是否可以从外部文件调用数据库配置? 问题是如果我想更改我的数据库root密码我必须手动更改两个站点database.php,现在让我说我有10个网站这将是一项艰巨的任务是否正确? 我只想更改单个文件,以便所有站点都可以使用该配置。</ p>

我通过PHPmyadmin使用mysql。</ p>

  $ db  ['default'] = array(
'dsn'=&gt;'',
'hostname'=&gt;'localhost',
'用户名'=&gt;'root',
'密码'=&gt ;'root',
'数据库'=&gt;'MyBlog',
'dbdriver'=&gt;'mysqli',
</ code> </ pre>
</ div>

展开原文

原文

I have two web sites using codeigniter that uses the same database configurations(hostname,username,password), just want to ask if the database configuration can be called from a external file? The thing is if i want to change my database root password i have to change the two sites database.php manually, now lets says i have 10 websites this will be a difficult task correct? i just want to change a single file so all sites can use that configuration.

I am using mysql via PHPmyadmin.

$db['default'] = array(
    'dsn'   => '',
    'hostname' => 'localhost',
    'username' => 'root',
    'password' => 'root',
    'database' => 'MyBlog',
    'dbdriver' => 'mysqli',

douyo770657
douyo770657 你可以这样做。在任何地方创建一个文件,应该是所有人共同的。并使用来自CI挂钩的curl调用该文件,并在响应中获取数据库凭据。现在问题是如何在databse.php中传递这些动态凭证?谷歌这个。这可能是单向的,我不确定。
3 年多之前 回复

1个回答



如果您需要为所有站点使用一个配置,您可以创建该文件(即db_config.php)并将ti设置为 可供所有CI应用程序使用。</ p>

db_config.php </ p>

 &lt;?php 

return [
'dsn'= &GT; '',
'hostname'=&gt; 'localhost',
'用户名'=&gt; '',
'密码'=&gt; '',
'数据库'=&gt; '',
'dbdriver'=&gt; 'mysqli',
'dbprefix'=&gt; '',
'pconnect'=&gt; FALSE,
'db_debug'=&gt; (环境!=='生产'),
'cache_on'=&gt; FALSE,
'cachedir'=&gt; '',
'char_set'=&gt; 'utf8',
'dbcollat​​'=&gt; 'utf8_general_ci',
'swap_pre'=&gt; '',
'加密'=&gt; FALSE,
'compress'=&gt; FALSE,
'triminon'=&gt; FALSE,
'failover'=&gt; array(),
'save_queries'=&gt; TRUE
];
</ code> </ pre>

然后在每个应用程序的 APPPATH.'config / db.php'</ code>中:</ p>

  $ db ['default'] = require('/ path / to / db_config.php'); 
</ code> </ pre>
</ div>

展开原文

原文

If you have need to use one configuration for all sites, you can make the file (i.e. db_config.php) and set ti somewhere to be available to all CI applications.

db_config.php

<?php

return [
    'dsn'   => '',
    'hostname' => 'localhost',
    'username' => '',
    'password' => '',
    'database' => '',
    'dbdriver' => 'mysqli',
    'dbprefix' => '',
    'pconnect' => FALSE,
    'db_debug' => (ENVIRONMENT !== 'production'),
    'cache_on' => FALSE,
    'cachedir' => '',
    'char_set' => 'utf8',
    'dbcollat' => 'utf8_general_ci',
    'swap_pre' => '',
    'encrypt' => FALSE,
    'compress' => FALSE,
    'stricton' => FALSE,
    'failover' => array(),
    'save_queries' => TRUE
];

Then in your APPPATH.'config/db.php' of every application you should have:

$db['default'] = require('/path/to/db_config.php');

doqdcks3948
doqdcks3948 不要忘记将该文件从可公开访问的位置排除。 在任何情况下,您都不应该通过Web浏览器访问它。
3 年多之前 回复
drurhg37071
drurhg37071 抱歉,我试图使用base_url(),它在同一台服务器上,谢谢!
3 年多之前 回复
dongxi4235
dongxi4235 请告诉每一个重要细节。 此解决方案旨在用作常规文件要求。 为此,您需要该文件的公共场所,然后它是不安全的,因为它可以被任何人阅读。 应用程序不在同一台服务器上?
3 年多之前 回复
douchigu1723
douchigu1723 我试图包括使用url路径,但我遇到了像这样的问题stackoverflow.com/questions/9498885 / ...
3 年多之前 回复
立即提问