问题描述
我在使用无脂肪框架上为此苦苦挣扎:
$db=new DB\sql(
'MysqL:host=localhost;port=3306;dbname=MysqLdb','admin','p455w0rD'
);
tu如何在纯文本上使用变量而不是?我想使用环境变量并执行以下操作:
$db=new DB\sql(
'MysqL:host='.getenv('HOST').';port=3306;dbname=MysqLdb',getenv('USERNAME'),getenv('PASSWORD');
);
但是,它不起作用,而且我找不到其他输入sql凭据的方法:( 这是文档:https://fatfreeframework.com/3.7/databases
Internal Server Error
sqlSTATE[HY000] [2002] No such file or directory [/Users/kasterby/Documents/yeet/yeet/fatfree-master/lib/DB/sql.PHP:519]
解决方法
No such file or directory
通常意味着您的MySQL服务器未启动并正在运行。
但是,要专门回答您的问题,如果您要使用变量而不是硬编码,那很容易。您可以使用configuration files,也可以创建一个完全独立的文件,例如PHP's ini parse function,甚至可以创建一个简单的config.php
,如下所示:
// repo/config.php
<?php
return [
'db_name' => 'database','db_user' => 'someusername',// etc
];
// repo/public/index.php
$config = require('config.php');
$db = new DB\SQL(
'mysql:host='.$config['db_host'].';port='.$config['db_port'].';dbname='.$config['db_name'],$config['db_user'],$config['db_pass']
);
不过,对于您的问题,如果要使用环境变量,则取决于您的网络服务器,但是您必须在网络服务器配置中定义环境变量才能使用它们。您还可以创建一个与Laravel相似的.env
文件,并使用提到的here
.env
文件