在 Joomla 站点中每个 .php 文件的顶部,您会看到类似以下内容:
defined('_JEXEC') or die('Restricted Access');
这是为了防止任何人直接通过浏览器访问文件。它基本上说:如果未定义_JEXEC常量,则终止进程,在应用程序运行时设置_JEXEC,它发生在顶部附近的站点主index.php文件中:
// Set flag that this is a parent file.
define('_JEXEC', 1);
如果将其删除,则肯定会导致这些问题,但错误很可能是由在 CMS 中发布的组件或插件引起的。
如果您安装了适用于 Joomla 1.0 的插件,您将看到类似这样的错误,这是因为寻找设置的 _JEXEC,而是寻找类似 _VALID_MOS 的内容,在这种情况下,请尝试切换传统模式插件。
如果 Legacy 模式无法解决您的问题,请检查网站模板以确保已定义 ('_JEXEC') 或 die('Restricted Access');行没有引起问题,用 # 或 // 将其注释掉并进行测试。
您可以尝试打开 Joomla 调试,但不能保证会有所帮助。
如果你真的卡住了,你可以尝试以下方法之一:
1) 备份数据库,然后一一禁用所有插件(我注意到您仍然可以访问管理员区域),然后重新启用插件或恢复数据库。
2) 我曾经不得不查找和替换 CMS 中的每个插件,我替换了字符串:
'Restricted Access'
与
'Restricted Access' . __FILE__
我使用 PHP 完成了这项工作,它使我能够准确地确定哪个文件引发了错误。我明明是先备份了站点文件结构,所以干脆解压备份,稍后删除修改后的文件。