我尝试在我的helhum/dotenv连接器项目中使用TYPO3。
我做了以下工作:
我的composer.json
{
"require": {
"typo3/cms": "^8.5",
"helhum/dotenv-connector": "1.0.0",
"helhum/typo3-console": "^4.1"
},
"extra": {
"helhum/typo3-console": {
"install-extension-dummy": false
},
"typo3/cms": {
"cms-package-dir": "{$vendor-dir}/typo3/cms",
"web-dir": "web"
},
"helhum/dotenv-connector": {
"env-dir": "",
"allow-overrides": true,
"cache-dir": "var/cache"
}
}
}然后我跑了
composer install之后,我使用以下命令设置TYPO3
php vendor/bin/typo3cms install:setup这应该与以“正常”方式进行安装类似。
之后,我把一个.env放在我的composer.json旁边。
此.env包含以下内容:
TYPO3_CONTEXT="Development"
TYPO3__DB__database="dotenvconnector"
TYPO3__DB__host="127.0.0.1"
TYPO3__DB__password="root"
TYPO3__DB__port="3306"
TYPO3__DB__username="root"然后,我使用Typo3_console命令从web/typo3conf/LocalConfiguration.php中删除了有关DB的所有信息
php vendor/bin/typo3cms configuration:remove DB然后我再次运行composer install和composer update。
现在在浏览器中调用TYPO3时,它一直告诉我
未配置名为"Default“的请求数据库连接。
那我错过了什么?显然,我的.env根本没有被解析或使用。
FYI: Cachefile是在var/cache中编写的,内容如下:
<?php
putenv('TYPO3__DB__database=dotenvconnector');
$_ENV['TYPO3__DB__database'] = 'dotenvconnector';
$_SERVER['TYPO3__DB__database'] = 'dotenvconnector';
putenv('TYPO3__DB__host=localhost');
$_ENV['TYPO3__DB__host'] = 'localhost';
$_SERVER['TYPO3__DB__host'] = 'localhost';
putenv('TYPO3__DB__password=root');
$_ENV['TYPO3__DB__password'] = 'root';
$_SERVER['TYPO3__DB__password'] = 'root';
putenv('TYPO3__DB__port=3306');
$_ENV['TYPO3__DB__port'] = '3306';
$_SERVER['TYPO3__DB__port'] = '3306';
putenv('TYPO3__DB__username=root');
$_ENV['TYPO3__DB__username'] = 'root';
$_SERVER['TYPO3__DB__username'] = 'root';发布于 2017-01-06 07:56:19
我们的设置是这样运作的:
AdditionalConfiguration.php
$loader = new Dotenv\Dotenv(__DIR__ . '/../../', '.env.defaults');
$loader->load();
$loader = new Dotenv\Dotenv(__DIR__ . '/../../');
$loader->overload();有趣的是,我们使用一个.env.defaults文件运行,该文件包含标准配置(当然没有用户或密码),然后在每个用户/环境中重载定制的.env文件。这在添加新功能时非常有帮助,因为新功能需要新的.env配置,这样团队中的其他人就不会遇到Fatals或异常。
$GLOBALS['TYPO3_CONF_VARS']['DB']['Connections']['Default']['dbname'] = getenv('TYPO3_DB_NAME');
$GLOBALS['TYPO3_CONF_VARS']['DB']['Connections']['Default']['host'] = getenv('TYPO3_DB_HOST');
$GLOBALS['TYPO3_CONF_VARS']['DB']['Connections']['Default']['password'] = getenv('TYPO3_DB_PASSWORD');
$GLOBALS['TYPO3_CONF_VARS']['DB']['Connections']['Default']['user'] = getenv('TYPO3_DB_USER');LocalConfiguration.php
return [
'BE' => [
'debug' => '<set by dotenv>',
'explicitADmode' => 'explicitAllow',
'installToolPassword' => '<set by dotenv>',
'loginSecurityLevel' => 'rsa',
'sessionTimeout' => '<set by dotenv>',
],
'DB' => [
'Connections' => [
'Default' => [
'charset' => 'utf8',
'dbname' => '<set by dotenv>',
'driver' => 'mysqli',
'host' => '<set by dotenv>',
'password' => '<set by dotenv>',
'port' => 3306,
'user' => '<set by dotenv>',
],
],
]...我没有粘贴整个配置,但我认为你明白了。
发布于 2017-01-09 08:27:54
dotenv-连接器将.env文件读入环境,但不为TYPO3配置变量分配任何值。您应该能够在您的php代码中使用getenv读取它们。连接器不是专门面向TYPO3的,而是任何基于composer的php应用程序的通用工具。因此,了解TYPO3特定的变量赋值将超出项目的范围。
还有一个项目,配置加载程序,可以帮助将环境变量分配给TYPO3配置变量。
.env -dotenv-connector-> environment -configuration-loader-> $GLOBALS['TYPO3_CONF_VARS']配置加载程序可以在https://github.com/helhum/config-loader上找到。还有一个用https://github.com/helhum/TYPO3-Distribution连接在一起的例子。
您不必使用配置加载程序。您还可以使用getenv()手动分配这些值。
发布于 2018-09-26 13:16:45
PHP7.2(关于TYPO3 v9)和argon哈希的用法有一个重要的注意事项:您必须对.env文件中的值使用单引号/滴答。示例:代替my_value="foobar"编写my_value='foobar'
https://stackoverflow.com/questions/41500306
复制相似问题