【问题标题】:Codeigniter using a external file replacing database.phpCodeigniter 使用外部文件替换 database.php
【发布时间】:2017-06-15 07:17:55
【问题描述】:

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

我正在通过 PHPmyadmin 使用 mysql。

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

【问题讨论】:

  • 你可以这样做。在任何地方创建一个文件,应该对所有人都通用。并使用 CI 钩子中的 curl 调用该文件,在响应中您应该获取数据库凭据。现在的问题是如何在databse.php 中传递这些动态凭证?谷歌为此。这可能是一种方式,我不确定。

标签: php mysql codeigniter


【解决方案1】:

如果您需要为所有站点使用一种配置,您可以制作文件(即 db_config.php)并将 ti 设置为可供所有 CI 应用程序使用。

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
];

然后在你应该拥有的每个应用程序的APPPATH.'config/db.php' 中:

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

【讨论】:

  • 我正在尝试包含使用 url 路径,但我遇到了类似这样的问题stackoverflow.com/questions/9498885/…
  • 请告诉每一个重要的细节。此解决方案旨在用作常规文件要求。为此,您需要该文件的公共场所,然后它不安全,因为任何人都可以阅读它。应用程序不在同一台服务器上?
  • 对不起,我尝试使用 base_url(),它在同一个服务器上,谢谢!
  • 不要忘记将该文件从可公开访问的位置中排除。在任何情况下,您都不应通过网络浏览器访问它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-16
  • 1970-01-01
  • 2013-04-02
  • 1970-01-01
  • 2022-06-16
  • 1970-01-01
相关资源
最近更新 更多