Joomla3.6致命错误:require_once():需要打开失败
Posted
技术标签:
【中文标题】Joomla3.6致命错误:require_once():需要打开失败【英文标题】:Joomla3.6 Fatal error: require_once(): Failed opening required 【发布时间】:2017-07-19 06:34:13 【问题描述】:我们已经迁移了网络托管服务提供商,并迁移了我们的 joomla 网站和数据库。
尝试访问网站前端时,出现错误:
警告: require_once(JPATH_BASE/libraries/import.legacy.php):无法打开流:没有这样的文件或目录 /home/xxx/public_html/includes/framework.php 在第 15 行
致命错误: require_once(): 未能打开所需的“JPATH_BASE/libraries/import.legacy.php” (include_path='.:/usr/lib/php:/usr/local/lib/php') 在 /home/xxx/public_html/includes/framework.php 在第 15 行
我检查了 import.legacy.php 文件在指定的目录中,权限是 644。
JPATH_BASE
的输出是/home/xxx/public_html
我该如何解决这个错误?
【问题讨论】:
看起来JPATH_BASE
没有定义并解释为字符串。不知道 Joomla,不知道该建议什么。不过可能有类似的问题,在搜索错误消息时,会尝试一下。
【参考方案1】:
将您的 require_once
语句更改为
require_once(JPATH_BASE . '/libraries/import.legacy.php')
【讨论】:
语句是 require_once (JPATH_LIBRARIES . '/import.legacy.php'); 当我按照建议更改语句时,它修复了错误,但现在给了我相同的另一个文件的错误。您是否建议全部更改? 是的,我会修复当前错误。您可以使用 IDE 执行“在文件中搜索和替换”,这将找到所有出现的旧代码并使用新代码更新它。JPATH_LIBRARIES
的输出是什么?似乎在一个地方有一个错误的定义。【参考方案2】:
确保您的 PHP 版本高于 5.3,并且您对文件拥有正确的权限以包含在其他文件中。
【讨论】:
这与问题有何关系?错误消息很明显,JPATH_BASE
没有解析为任何内容,只是用作包含路径的一部分。这与PHP版本无关。
import.legacy.php 和 framework.php 文件都来自核心 Joomla,您不应该在每个文件中查找和替换代码。如果您将来升级到新的 Joomla 版本,您所做的所有更改都将被新版本文件覆盖。您无法每次都查找和替换代码。JPATH_LIBRARIES 是 Joomla 中的预定义常量。即使我遇到了同样的问题并尝试更改文件和文件夹的权限,它也解决了我的问题。同样在其他一些服务器上,我们升级了 PHP 版本,它也对我有用。根本不需要接触核心文件。
参考forum.joomla.org/viewtopic.php?t=837896 & ***.com/questions/18428789/joomla-php-error-message【参考方案3】:
$ require_once(JPATH_LIBRARIES.'/joomla/document/html/renderer/head.php');
禁用或删除以上行并添加:
$header_contents = ‘’;
if(!class_exists(‘JDocumentRendererHead’))
$head = JPATH_LIBRARIES . ‘/joomla/document/html/renderer/head.php’;
if(file_exists($head))
require_once($head);
【讨论】:
以上是关于Joomla3.6致命错误:require_once():需要打开失败的主要内容,如果未能解决你的问题,请参考以下文章