0

这是我的php代码:

<?php
/* some code */
    function blah() {
        /* some code */
        if (!$book || !$txt) {
?>
<h1>Page Error</h1>
<p>This is not a valid page</p>
<?php
            return;
        }
?>
<h1>Check Page</h1>
<p>Data:<?php print '<a href="'.wl($page).'">'.$page.'</a>'; ?></p>
<?php
        /* some code */
    }
/* some code */

在服务器 A 上,它总是返回Parse error: syntax error, unexpected '?>', expecting function (T_FUNCTION) in /blah/blah.php on line 474(474 是 ?> 之前的行<h1>Check Page</h1>),而它在另一台服务器 B 上工作查找。

PHP Version 5.5.5-1+debphp.org~precise+2我的服务器 A 和PHP Version 5.4.20服务器 B上的版本。

看来我错过了一些配置?或者有一些我没有注意到的错误或功能?有人有想法吗?

编辑:

这个问题在我更换后暂时解决了:

?>
<h1>Page Error</h1>
<p>This is not a valid page</p>
<?php

有了这个:

            print <<<'EOF'
<h1>Page Error</h1>
<p>This is not a valid page</p>
EOF;

但我仍然想知道为什么会发生这种情况。


如前所述,'return' 返回给调用者,停止函数的执行。

我补充说,您可以通过调试方法检查此问题和其他问题。

最简单(也是最难)的方法是在代码中添加“打印”语句以突出显示其流程:

print 1
if clas == "warrior":
    print 2
    strenght, toughness = warrior()
    print 3
    print "Your strenght is %d." % strenght
    print 4
    print "Your toughness is %d." % toughness
    print 5
    return strenght, toughness
    print 6
    warrior_journey()
    print 7

如果你运行这段代码,你会看到编号将在 5 处停止,就在返回之前......

1
2
3
4
5

下一个调试步骤可能是pdb,然后是嵌入到您的 IDE 中的东西(例如 Eclipse 上的 PyDev)

4

1 回答 1

0

问题是您既没有关闭该功能,也没有if

<?php
/* some code */
function blah() {
    /* some code */
    if (!$book || !$txt) {
?>

<h1>Page Error</h1>
<p>This is not a valid page</p>
<?php
        return;
    }
?>
<h1>Check Page</h1>
<p>Data:<?php print '<a href="'.wl($page).'">'.$page.'</a>'; ?></p>
<?php
    /* some code */
}
/* some code */

相反,您应该这样做:

<?php
/* some code */
function blah() {
    /* some code */
    if (!$book || !$txt) {

        return;
    }    

echo "<h1>Page Error</h1>";
echo "<p>This is not a valid page</p>";

echo "<h1>Check Page</h1>";
echo '<p>Data: <a href="'.wl($page).'">'.$page.'</a></p>';

    /* some code */
}
/* some code */
于 2013-11-07T17:00:49.953 回答