【问题标题】:TYPO3 own file for database connectionTYPO3 自己的数据库连接文件
【发布时间】:2017-03-07 06:09:38
【问题描述】:

我试图从 LocalConfiguration 中取出我的数据库连接。但它不适用于这种方式。你有什么想法我怎么能实现它。这是我试图让它发挥作用的方法:

LocalConfiguration.php:

<?php
include_once 'databaseConn.php';
return [
    'BE' => [
        'debug' => false,
        'explicitADmode' => 'explicitAllow',
        'installToolPassword' => '$P$CcKE/MYkjKWDzNWsnVZhMBDAttVVrf.',
        'loginSecurityLevel' => 'rsa',
    ],

在databaseConn.php中:

<?php
$TYPO3_CONF_VARS['DB']['database'] = 'db_name';
$TYPO3_CONF_VARS['DB']['host'] = 'localhost';
$TYPO3_CONF_VARS['DB']['password'] = 'password';
$TYPO3_CONF_VARS['DB']['socket'] = '';
$TYPO3_CONF_VARS['DB']['username'] = 'usr_name';

希望你能帮助我。

谢谢 克里斯

【问题讨论】:

    标签: php typo3


    【解决方案1】:

    在 AdditionalConfiguration.php 中使用以下代码:

    $configurationSettings = array();
    @include_once(__DIR__.'/DatabaseCredentials.php');
    @include_once(… some other files …);
    if (is_array($configurationSettings)) {
        foreach ($configurationSettings as $path => $value) {
            $GLOBALS['TYPO3_CONF_VARS'] = \TYPO3\CMS\Core\Utility\ArrayUtility::setValueByPath($GLOBALS['TYPO3_CONF_VARS'], $path, $value);
        }
    }
    unset($configurationSettings);
    

    然后在 DatabaseCredentials.php 中设置您的数据库凭据:

    $configurationSettings = array_merge($configurationSettings, array(
      'DB/database' => 'local_database',
      'DB/username' => 'local_username',
      'DB/password' => 'secret'
    ));
    

    你就完成了。

    【讨论】:

    • DatabaseCredentials.php 中返回$configurationSettings 会更容易——不需要@ 运算符。如果数据库连接数据不可用,那么失败是正确的。
    • 你是对的,在现实生活中我有几个文件在一个链中(并将所有这些数组与 $configurationSettings 合并,如果你只需要一个文件,你可以简化它)。如果服务器上缺少该文件(例如在生产系统上),它会从 LocalConfiguration.php 中获取值……恕我直言,在这里丢弃消息是很有意义的。
    【解决方案2】:

    在同一目录中创建一个名为AdditionalConfiguration.php 的文件。您可以通过直接寻址来覆盖那里的每个值

    $GLOBALS['TYPO3_CONF_VARS']['DB']['database'] = 'custom';
    

    您还可以通过 $context = GeneralUtility::getApplicationContext()-&gt;__toString(); 检查 ApplicationContext,可以在 .htaccess 或 vhost 配置中设置

    【讨论】:

    • 您好 Georg,谢谢您的回答。你会如何用 git 解决我的问题?因为如果我把它写在附加文件中,那么我必须忽略这个文件。但我只想忽略一个只有数据库连接的特定文件。
    【解决方案3】:

    最好将数据库连接代码添加到“LocalConfiguration.php”中。

    return array(
        'BE' => array(
            'debug' => false,
            'explicitADmode' => 'explicitAllow',
            'installToolPassword' => '$P$CcKE/MYkjKWDzNWsnVZhMBDAttVVrf.',
            'loginSecurityLevel' => 'rsa',
        ),
        'DB' => array(
            'database' => 'db_name',
            'extTablesDefinitionScript' => 'extTables.php',
            'host' => 'localhost',
            'password' => 'password',
            'socket' => '',
            'username' => 'username',
        ),
    

    【讨论】:

    • 嗨,但这正是我不会的。事实上,两个不同的数据库 - 一个本地数据库和一个远程数据库 - 我有两个不同的连接,这个文件带有我想被 git 忽略的连接。这就是为什么我想从 Local Configuration.php 中排除它
    • 查看下面的链接可能会对您有所帮助。 "stackoverflow.com/questions/18350213/…"
    猜你喜欢
    • 2021-06-16
    • 2017-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多