我在 Slackware linux 上安装并运行了 Oracle Express 11g。我能够连接到它并运行查询。我安装了 apache 和 php 并安装了 oci8。phpinfo() 显示 oci8 已加载并启用。对于以下简单的 php 脚本,网页显示:
<?php echo "Hello World!!!"; ?>
所以apache中的php正在工作。现在进行以下简单的连接到 oracle 并显示版本:
<html>
<body>
Oracle Version <br/>
<?php
$conn = oci_connect('SYSTEM', 'password', 'localhost/XE');
$stid = oci_parse($conn, 'select banner from v$version');
oci_execute($stid);
echo "<table>\n";
while (($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) != false) {
echo "<tr>\n";
foreach ($row as $item) {
echo " <td>".($item !== null ? htmlentities($item, ENT_QUOTES) : " ")."</td>\n";
}
echo "</tr>\n";
}
echo "</table>\n";
?>
</body>
</html>
这从 Web 浏览器中的视图源显示以下内容:
<html>
<body>
Oracle Version <br/>
<table>
</table>
</body>
</html>
但是,当我使用 /usr/bin/php oratest.php 运行脚本时,它会正确输出以下内容:
<html>
<body>
Oracle Version <br/>
<table>
<tr>
<td>Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production</td>
</tr>
<tr>
<td>PL/SQL Release 11.2.0.2.0 - Production</td>
</tr>
<tr>
<td>CORE 11.2.0.2.0 Production</td>
</tr>
<tr>
<td>TNS for Linux: Version 11.2.0.2.0 - Production</td>
</tr>
<tr>
<td>NLSRTL Version 11.2.0.2.0 - Production</td>
</tr>
</table>
</body>
</html>
这怎么可能。为什么命令行 php 工作而 apache 提供相同的 php 脚本不起作用。由同一个 apache 提供的 phpinfo() 显示已安装并启用了 oci8。
如果您有任何想法,请帮助提前谢谢。