如何将Joomla的configuration.php文件移动到Web主机的根文件夹上?

时间:2014-08-17 12:29:17

标签: php joomla content-management-system

我已经在我的Joomla网站上安装了一个安全解决方案,它建议将configuration.php文件放在Public_html文件夹上面,怎么可能呢?

如何告诉CMS识别新位置?

该解决方案在所有版本的Joomla CMS中都有效吗?如果不是,那么请 写:

第1名:Joomla 2.5解决方案。

第二名:Joomla 3解决方案。

3 个答案:

答案 0 :(得分:3)

您需要修改位于包含文件夹中的 defines.php 文件。

特别是这一行:

define('JPATH_CONFIGURATION', JPATH_ROOT);

JPATH_ROOT更改为正确的路径。

但问题是您正在修改核心文件,因此如果更新更改了define.php文件,它将覆盖您的更改并将破坏您的设置。您需要重新编辑该文件。

同样,JPATH_CONFIGURATION常量可以用于CMS中没有专门尝试获取configuration.php文件的其他内容,因此请确保在执行之前检查它是否会对cms的其他部分产生负面影响这在生产中。

或者,您可以直接更改 frameworks.php 文件(也在include文件夹中)以更改从中加载配置的位置

ob_start();
require_once JPATH_CONFIGURATION . '/configuration.php';
ob_end_clean();

只需将require_once行更改为正确的路径。

此外,由于这是一个核心文件,因此可以通过更新进行更改。但是,如果在cms的组件或其他部分中手动加载配置文件,这也可能会影响其他部分。

答案 1 :(得分:1)

简单回答就是不要这样做。这意味着您必须执行@Patrick建议 正确且 工作的内容,但这意味着编辑核心Joomla文件。这是 不是一个好主意 ,就像你的情况一样,如果你更新Joomla,你将不得不每次都执行此更改而你忘记了(很可能),您的网站将完全停止工作。

我强烈建议您找一个不同的“安全解决方案”,不需要修改任何核心Joomla文件。

如果您可以通过“安全解决方案”定义您的意思,那么可能会为您提供替代方案

答案 2 :(得分:0)

我没有去挖掘,因为这已经实现了,但是可以在不改变核心的情况下完成 < / p>

Joomla在根目录中查找defines.php,如果存在,则imports it 然后,如果找到一个名为_JDEFINES的常量定义,它就不会加载原始文件,完全有效地覆盖

所以,如果你想覆盖定义它很容易,你要做的就是从defines.php路径下复制webroot/includes/文件的内容并将其粘贴到我们创建的文件中在webroot。您可以根据自己的喜好更改以下常量。

define('JPATH_CONFIGURATION', JPATH_ROOT."/my/supersecret/directory"); 

现在还有还有一件事要做,然后我们就可以了:)

您必须将以下行添加到覆盖文件的顶部(defines.php中的webroot)。

define('JPATH_BASE', __DIR__);
define('_JDEFINES', 1);

此常量传达给定义已被覆盖的框架并相应地使用新文件(上次我检查时,在整个框架的大约10个不同的位置检查此标志/常量,例如。{{ 3}},所以它很重要

此外,根据您在问题中的要求,我已经看到Joomla herev2.5.0可以使用此功能。

修改:如果您希望管理员面板正常工作,请记住您必须对管理员文件夹重复相同的步骤,并记住管理员有自己的/includes/defines.php