3

我正在使用安装了 apache 的 CentOS 6.4。我有一个名为 cmsSearch.php 的 php 文件。在文件的顶部,我有执行良好的 PHP(查询 Sphinx 搜索索引)。但是,当我在控制台(Chrome)中查看页面时,我尝试在下面的 HTML 中运行的任何 php(尝试运行 foreach 并使用 Sphinx 搜索的结果填充表格)都会被注释掉。这是整个 cmsSearch.php 文件:

<?php
require("sphinxapi.php");

if($_POST['keyword'])
{
$keyword = $_POST['keyword'];
$client = new SphinxClient();
$client->SetMatchMode(SPH_MATCH_ANY);
$result = $client->Query($keyword, "staffDirectoryMember");

if(!$result)
{
    print "ERROR: " . $client->GetLastError();
}
else
{
    var_dump($result["matches"]);
}
}
?>

<!DOCTYPE html>
<html>
<head>
<title>Sphinx Test</title>

<style>
.container
{
    border: solid 1px black;
    height: 350px;
    width: 700px;
    margin: auto;
    padding: 5px;
}
.output
{
    margin-top:20px;
    border: solid 1px red;
    height: 200px;
}
</style>
</head>
<body>
<?echo "TEST"; ?>
<div class="container">
    <div>
        <form method="post" action="cmsSearch.php">
            <input type="text" name="keyword">
            <input type="submit" value="Search">
        </form>
        <div class="output">
            <? echo "test2"; ?>
            <table>
                <thead>
                    <tr>
                        <th>ID</th>
                        <th>Weight</th>
                        <th>ClientId</th>
                        <th>DomainId</th>
                        <th>ContentTypeId</th>
                    </tr>
                </thead>
                <tbody>
                <?
                    echo "Above for loop";
                    foreach($result["matches"] as $match)
                    {
                    echo "Print from for loop:";
                    var_dump($match);   
                    ?>
                    <!-- <tr>
                        <td><?=$match[id]?></td>
                        <td><?=$match[weight]?></td>
                        <td><?=$match[attrs][clientid]?></td>
                        <td><?=$match[attrs][domainid]?></td>
                        <td><?=$match[attrs][contenttypeid]?></td>
                    </tr> -->
                    <?}
                    echo "After for loop";
                    ?>
                </tbody>
            </table>
        </div>
    </div>
</div>

不知道为什么 php 执行得最好(我可以回显并且 var 转储工作),但是任何放在 HTML 中的 php 都只是显示为注释并且不做任何事情。有人有想法吗?

4

2 回答 2

4

HTML 中包含的 PHP 使用短标签,可以在php.ini文件中关闭。看看这个指令,如果你想使用它们,请确保它设置为true :

short_open_tag true

http://www.php.net/manual/en/ini.core.php#ini.short-open-tag

于 2013-09-18T20:00:29.950 回答
1

尝试使用<?php来启动您的 PHP 块,而不是<?......这是代码块之间的区别。

于 2013-09-18T20:00:03.567 回答