【发布时间】:2016-06-10 16:46:20
【问题描述】:
我使用 Linux Mint、Apache2、PHP5、Oracle Xe 11 并且没有安装 SELINUX。
我已经在我的机器上成功安装了 oci8。我在 /etc/php5/mods-available 上设置了 oci8 扩展,我用 phpinfo() 检查,启用了 oci8。
我尝试连接到 oracle。我有这个 php 代码:
<?php
// error_reporting(E_ALL);
// Connects to the XE service (i.e. database) on the "localhost" machine
echo "[1]start connect<br>\n";
$conn = oci_new_connect('usertest', 'pwtester', 'localhost/XE');
echo "[2]check connection<br>\n";
if (!$conn) {
$e = oci_error();
echo "[3]Connection is error<br>\n";
trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}
echo "[4]test query\n";
$sql = oci_parse($conn, 'SELECT * FROM users');
oci_execute($sql);
echo "<table border='1'>\n";
while ($row = oci_fetch_array($sql, OCI_ASSOC+OCI_RETURN_NULLS)) {
echo "<tr>\n";
foreach ($row as $item) {
echo " <td>" . ($item !== null ? htmlentities($item, ENT_QUOTES) : " ") . "</td>\n";
}
echo "</tr>\n";
}
echo "</table>\n";
?>
此代码正在 php-cli 上运行并显示表格。但是,当从浏览器访问时,此代码无法正常工作,没有返回任何结果错误。代码流以“[3]Connection is error
\n”消息结束。
如何解决这个问题?
添加信息:
我尝试使用 php serve 这个 php 命令:
php -S localhost:8000
并且php代码可以连接到oracle。
[更新]
我尝试在代码顶部添加此代码。
PutEnv("ORACLE_HOME=/u01/app/oracle/product/11.2.0/xe");
PutEnv("LD_LIBRARY_PATH=/u01/app/oracle/product/11.2.0/xe/lib");
并且代码正在运行。 我认为,问题在于可变环境。
【问题讨论】:
标签: php linux oracle apache2 oci8