关于堆栈溢出的第一个问题。我一直能够在不问问题的情况下找到我要找的东西,但这让我很难过。
我正在使用亚马逊云将我的网站升级为托管。作为升级的一部分,我将我的代码部署到我标记为E1服务器(开发)的内容中。我认为这将是一个快速的过程,但是我已经发现了使用PHP中的if语句的障碍。
我在php if语句中使用嵌套HTML来向我网站上的用户显示反馈。这在我以前的托管服务提供商PHP版本5.3.13上工作得很好,新服务器的版本为5.3.28。
以下是代码:
$positive_feedback = $_SESSION['letter_update_feedback'];
if($positive_feedback != "")
{
?>
<div class="positivefeedback">
<h3>
<?php
echo $positive_feedback;
$positive_feedback = "";
?>
</h3>
</div>
<?
}
$_SESSION['letter_update_feedback'] = $positive_feedback;
在新服务器上,它失败并显示以下错误:
解析错误:语法错误,第1239行/var/www/html/viewletter.php中的意外$结尾
另一方面,如果我从if语句中删除所有本机HTML,并使用echo替换它们,它就有效。
$positive_feedback = $_SESSION['letter_update_feedback'];
if($positive_feedback != "")
{
echo '<div class="positivefeedback">
<h3>';
echo $positive_feedback;
$positive_feedback = "";
echo '</h3>
</div>';
}
$_SESSION['letter_update_feedback'] = $positive_feedback;
提前感谢所有帮助。
答案 0 :(得分:2)
在PHP中编程时,网站管理员可能会遇到错误,例如解析错误:语法错误,意外$ end。此错误与PHP中的语法错误有关。导致错误的最可能原因是PHP代码中缺少或不匹配的括号。要解决PHP中缺少的括号错误,必须从头开始检查代码以搜索它。避免错误的一种方法是在代码中使用适当的缩进。一旦代码中的所有括号都设置正确,解析错误:语法错误,意外的$ end将被修复。
解析错误:语法错误,意外的$ end 在PHP中编程时,可能是您遇到以下错误:
解析错误:语法错误,第1行命令行代码中的意外$ end
导致此错误的原因是什么?
实际上,这个错误意味着PHP已经完成了对代码的分析,但是您忘记在页面的某个位置或者包含的位置中关闭符号。
情况:
您忘记关闭引号,因此PHP会继续分析您的代码,直到找到结束引号。
你忘了关闭一个括号,所以从最后一个开头,PHP认为所有后面的代码作为一个块的一部分从来没有 结束。
您忘了关闭括号,因此从最后一个左括号开始,PHP会将所有后续代码视为特定块的一部分(条件,函数的参数等),但不会结束。
你忘记了一个逗号,所以对于PHP,你的代码中有一条指令没有结束。
这意味着问题可能不在错误消息中提到的行上,因为丢失的符号可能位于该点之后的任何位置。
导致此错误的代码示例。
以下是导致此错误的代码示例。
<?
if ($condition){
echo "true";
?>
忘了关闭报价:
<?
echo "test;
?>
忘记关闭括号:
<?
mysql_query("mysite", "logon", "thisisnotasqlserver.com" ;
?>
忘记分号:
<?
if ($test){
echo '1'
}
?>
如何修复/避免此错误 这通常是由于代码组织结构不合理。特别要记住要很好地缩进代码,以便在视觉上区分不同的块。
清洁代码示例
//Equivalent of array_reverse()
function inverse_table($table)
{
$ret = array();
if (is_array($table) ){
for($i=sizeof($table) - 1; $i >= 0; $i++)
{
$ret[] = $table[$i];
}
}
return $ret;
}
非缩进代码示例,难以调试:
function inverse_table($table)
{
$ret = array();
if (is_array($table) ){
for($i=sizeof($table) - 1; $i >= 0; $i++)
{
$ret[] = $table[$i];
}
}
return $ret;
}
如果您遇到此错误,请注意,它不一定是代码的结尾,例如,省略代码可能位于代码的最开头,即使您的文件是1000行。