1
我有Oracle Express 11g安裝在Slackware linux上並正在運行。我能夠連接到它並運行查詢。 我安裝了apache和php並安裝了oci8。 phpinfo()顯示oci8已加載並啓用。 對於以下簡單的PHP腳本的網頁顯示:頁面不顯示與apache和php和OCI8和Oracle Express 11g
<?php echo "Hello World!!!"; ?>
這麼說PHP在Apache是工作。 現在對於下面的簡單連接到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已安裝並啓用。
如果您有任何意見,請提前致謝。
我強烈建議不要使用putenv()。過去這一直很成問題。相反,請將變量添加到正確的Apache初始化腳本中,例如RH Linux上的/ etc/sysconfig/httpd。閱讀免費的PHP和Oracle書籍http://www.oracle.com/technetwork/topics/php/underground-php-oracle-manual-098250.html –
我在Slackware上,無法以任何其他方式工作。 –
繼續尋找。我懷疑他們從Apache中刪除了一個功能。 –