从什么时候开始:
//echo "[$sql][$result][$rows][$e]<BR>";
导致错误?此评论后面的代码在浏览器中作为源被spwewed!
请记住我每天使用PHP,我以前从未见过这个!我正在将一个古老的php应用程序从一个旧的Win2k盒移植到一个新的Windoze 2003服务器 - apache 2.2,mysql 5.1.32,php 5.2.9,而且该应用程序正在轰炸所有地方因为到处都注释掉了代码。
任何开关都会阻止它对评论如此敏感?
我知道//
后跟?>
然后代码会中断,因为?>
终止了php,但是BR标签?当然不是。
更多细节:代码块是
if ($condition){
// do stuff
} else {
$sql="select * from person where percode='$person'";
$result=mysql_db_query($db,$sql,$conn);
@$rows=mysql_num_rows($result);
$e=mysql_errno()." ".mysql_error();
//echo "[$sql][$result][$rows][$e]<br>";
$perfname=mysql_result($result,0,"perfname");
$persname=mysql_result($result,0,"persname");
$peraddr1=mysql_result($result,0,"peraddr1");
}
?>
评论的代码运行正常。评论后的代码到?&gt;被呕吐到浏览器中。之后,HTML显示很好。删除评论(甚至只是BR周围的&lt;和&gt;使代码工作正常。
答案 0 :(得分:3)
您可以在要迁移到的新服务器的php.ini文件中关闭short open tag设置。如果关闭此设置,则会忽略所有<?
标记,并且仅在代码之间进行编码
完整
<?php
和?>
标记被解析为PHP代码。查看该设置是否已关闭,如果将其设置为开启,则可以修复该设置。
如果没有,请检查您是否在评论之前的任何地方错误地'?>
。此外,共享完整的代码块将有所帮助。