2017-02-28 144 views
1

我们已经移动了虚拟主机提供商,并将我们的joomla网站和数据库移到了对面。Joomla3.6致命错误:require_once():无法打开所需

当试图访问该网站的前端,我得到的错误:

Warning: require_once(JPATH_BASE/libraries/import.legacy.php): failed to open stream: No such file or directory in /home/xxx/public_html/includes/framework.php on line 15

Fatal error: require_once(): Failed opening required 'JPATH_BASE/libraries/import.legacy.php' (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/xxx/public_html/includes/framework.php on line 15

我已经检查了import.legacy.php文件在规定目录的权限是644

JPATH_BASE输出是/home/xxx/public_html

如何解决这个问题?

+0

它看起来像'JPATH_BASE'没有定义和解释为一个字符串。不知道Joomla,不知道该怎么建议。尽管如此,在搜索错误消息时可能会遇到类似的问题。 –

回答

2

更改require_once语句

require_once(JPATH_BASE . '/libraries/import.legacy.php') 
+0

该语句是** require_once(JPATH_LIBRARIES。'/import.legacy.php');**,当我按照建议更改语句时,它修复了错误,但现在给了我不同文件的相同错误。你建议改变它们吗? – KEmu

+0

是的,我会修正当前的错误。您可以使用IDE执行“在文件中搜索和替换”,它将查找所有旧代码的出现并用新代码进行更新。 –

+0

'JPATH_LIBRARIES'的输出是什么?似乎在一个地方,人们有一个错误的定义。 – fragmentedreality

-1

确保你的PHP版本比5.3更高,你也对文件许可权在一些其他的文件,包括。

+0

这与这个问题有什么关系?错误消息很明显,'JPATH_BASE'没有解析为任何东西,而只是用作包含路径的一部分。这与PHP版本无关。 – fragmentedreality

+0

import.legacy.php和framework.php文件都来自核心Joomla,你不应该找到并替换每个文件中的代码。如果您将来升级到新的Joomla版本,您所做的所有更改将被新版本文件覆盖。您无法每次都找到并替换代码.JPATH_LIBRARIES是Joomla中的预定义常量。即使我面临同样的问题,并试图改变文件和文件夹的权限,它解决了我的问题。另外在其他一些服务器上,我们升级了PHP版本,它也为我工作。根本不需要触摸核心文件。 – Karthikeyani

+0

请参阅https://forum.joomla.org/viewtopic.php?t=837896&http://stackoverflow.com/questions/18428789/joomla-php-error-message – Karthikeyani

0
$ 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); 
    } 
}