【问题标题】:Undefined index - Apache - Environment Variables未定义的索引 - Apache - 环境变量
【发布时间】:2020-09-21 13:17:13
【问题描述】:

我已将 PHP 代码从 Linux 服务器克隆到 Windows WAMP 服务器。当我运行 index.php 页面时,出现图片中的错误。根据我在 Windows WAMP 服务器中的计算结果,环境变量尚未初始化。

如何在环境中初始化这些变量?

谢谢。

DB::init([
    'host'              => $_ENV['DB_HOST'],
    'database'          => $_ENV['DB_DATABASE'],
    'user'              => $_ENV['DB_USERNAME'],
    'password'          => $_ENV['DB_PASSWORD'],
]);

https://i.stack.imgur.com/tCxwT.png

【问题讨论】:

  • 这能回答你的问题吗? How to set global environment variables for PHP
  • 我在目录:C:\WAMP\bin\apache\apache2.4.41\conf 中有一个名为httpd的文件。我已经输入了它:SetEnv DB_DATABASE 'pettbot' 我在一个随机的地方输入了这个文本,它不在任何标签内,因为我不确定标签是什么。它仍然不起作用。我是否忽略了在其周围放置适当的标签?我使用的是正确的文件吗?我的语法正确吗?
  • 它不需要在任何标签内。你重启了 Apache 吗?
  • 我重启了Apache,问题依旧。
  • 如果你在PHP中使用getenv('DB_DATABASE'),值会通过吗?

标签: php apache


【解决方案1】:

数据库初始化方法正在寻找要在某处定义的主机、数据库、用户和密码。

我建议将它们设置在任何 SVN(git 等)都会忽略的配置文件中。你最终会得到一个如下所示的文件:

$_ENV['DB_HOST'] = //name_of_your_host;
$_ENV['DB_DATABASE'] = //name_of_database_to_start_in;
$_ENV['DB_USER'] = //name_of_mysql_user_to_access_database_above;
$_ENV['DB_PASSWORD'] = //password_of_user_above;

填写注释部分,并在调用 DB::init 之前将其包含在内。 要记住的一个非常非常非常重要的部分是不要将配置文件包含在您的 git 或其他存储库中!否则,如果您的存储库被破坏,攻击者将可以访问有效的 DB_USER和 DB_PASSWORD!!

【讨论】:

    猜你喜欢
    • 2015-02-26
    • 2020-03-27
    • 2020-07-22
    • 2020-08-09
    • 2021-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多