2016-02-27 151 views
0

我使用Linux Mint,Apache2,PHP5,Oracle Xe 11并且没有安装SELINUX。
我已经成功在我的机器上安装oci8。我已经在/ etc/php5/mods-available上设置了oci8扩展,并且我使用phpinfo()进行了检查,oci8已启用。php5无法通过apache连接到oracle

我尝试连接到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) : "&nbsp;") . "</td>\n"; 
    } 
    echo "</tr>\n"; 
} 
echo "</table>\n"; 

?> 

此代码正在php-cli上并显示表格。但是,从浏览器访问时,此代码不起作用,返回结果错误。并且代码流程以“[3]连接错误
\ n”消息完成。

如何解决这个问题?

添加信息:
我尝试使用PHP的服务与此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"); 

并且代码正在运行。 我想,问题是变量环境。

回答

0

您只在php.ini中为cli启用了oracle扩展。你也应该在php.ini中启用它。编写简单的php脚本

<?php echo php_info(); 

然后在浏览器中打开它并检查php.ini路径。 也可能是你fogot重启Apache或php -fpm

+0

我已重新启动我的电脑。我已经运行了这个命令 “echo'extension = oci8.so'>>/etc/php5/apache2/php.ini”并且在phpinfo页面上启用了oci8。 – mosleim

+0

@mosleim'$ e = oci_error();'后存储在$ e变量中的内容? –

+0

这只是结果'假'。 – mosleim

0

Oracle 11g + WAMP + Windows 本教程将向您介绍如何在Oracle数据库11g中使用PHP。 首先让我们假设我正在使用Windows 7 64bit以及oracle 数据库11G和wamp服务器,所以我已经下载了Oracle instant 客户端x64。如果你正在使用32位窗口,然后下载32位客户端 ,否则它不会工作。 步骤: - 1.安装Oracle数据库11g XE

2.安装WAMP

3.Download适当的Oracle Instant客户端

4.Extract所有Oracle即时客户端的内容,并复制 的.DLL文件并粘贴到这样 d目录:\ WAMP \ BIN \ apache的\ Apache2.2.17 \ BIN

5.打开WAMP的服务器和左键单击图标> PHP> PHP扩展>检查php_oci8只有_11g。 如果您使用的oracle数据库比旧版本11g像10g然后 您只能检查php_oci8。

6.打开oracle数据库11g XE服务。另外在服务中也应该有OracleServiceORCL 。

7。写一个PHP代码连接oracle与数据库11g XE,然后 将代码保存在wamp服务器的www目录中。以下是

<?php 
$userName = "username"; $password = "paswword"; $dtabasePort = "1521"; $serverName = "localhost"; 
$databaseName = "ORCL"; 
$c = oci_connect($userName, $password, "(DESCRIPTION=(ADDRESS_LIST = (ADDRESS = (PROTOCOL = 
TCP)(HOST =$serverName)(PORT = $dtabasePort)))(CONNECT_DATA=(SID=$databaseName)))"); 
print_r($c); ?> 

Enjoy !!!!