gpt4 book ai didi

php - 如何更改 PHP 环境之间的不同配置设置?

转载 作者:太空狗 更新时间:2023-10-29 14:38:05 27 4
gpt4 key购买 nike

我有一些通过 AJAX 调用调用的 php 文件。它们都有指向我的 config.php 的 URL。现在我遇到的问题是,当我在我的服务器上部署新版本时,我总是必须手动更改该配置文件的 URL。

本地路径:

define('__ROOT__', $_SERVER["DOCUMENT_ROOT"].'/mywebsite');

服务器路径:

define('__ROOT__', $_SERVER["DOCUMENT_ROOT"].'/../dev.my-website.tld/Modules/');

我想跟踪所有这些 PHP 文件中的更改。我正在寻找一种解决方案来自动更改此路径。

例如这是我当前的工作流程:

本地环境:

  • (路径版本 A)
  • 修改代码
  • git add、git commit、git merge、git push 到我的服务器

服务器:

  • git reset --hard
  • 改变版本B的路径

最佳答案

您正在尝试在开发和实时之间运行不同的代码库,不推荐这样做——它们应该是相同的。我解决这个问题的方法是使用一个环境变量来指定应该加载几个配置文件中的哪个。

在我的 Apache 虚拟主机中我做了这样的事情:

SetEnv ENVIRONMENT_NAME local

然后我使用一个函数来读取环境名称:

function getEnvironmentName()
{
$envKeyName = 'ENVIRONMENT_NAME';
$envName = isset($_SERVER[$envKeyName]) ? $_SERVER[$envKeyName] : null;
if (!$envName)
{
throw new \Exception('No environment name found, cannot proceed');
}

return $envName;
}

然后可以在配置文件中使用该环境名称来包含,或从以环境为键的单个数组中检索值。

我经常将特定于环境的设置保存在一个名为 configs/ 的文件夹中,但您可以将它们存储在应用程序中任何有意义的位置。所以例如你可以有这个文件:

// This is /configs/local.php

return array(
'path' => '/mywebsite',
// As many key-values as you want
);

然后您可以执行此操作(假设您的前端 Controller 在您的项目中更深一层,例如在 /web/index.php 中):

$root = dirname(__DIR__);
$config = include($root . '/configs/' . getEnvironmentName() . '.php');

然后您将可以在 $config 中访问适当的每个环境设置。

关于php - 如何更改 PHP 环境之间的不同配置设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27600408/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com