【问题标题】:php5 cannot connect to oracle by apachephp5无法通过apache连接到oracle
【发布时间】: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) : "&nbsp;") . "</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


    【解决方案1】:

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

    <?php echo php_info();
    

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

    【讨论】:

    • 我已经重启了我的电脑。我已经运行了这个命令 "echo 'extension=oci8.so'>>/etc/php5/apache2/php.ini" 并且在 phpinfo 页面上启用了 oci8。
    • @mosleim $e = oci_error(); 之后 $e 变量中存储了什么?
    • 这只是结果'假'。
    • Oci_error 应该返回数组。执行var_dump($e) 并显示结果
    • 返回“bool(false)”
    【解决方案2】:

    Oracle 11g + WAMP + Windows 本教程向您展示如何将 PHP 与 Oracle 数据库 11g 一起使用。 首先让我们假设我正在使用 Windows 7 64bit 和 oracle 数据库11G和wamp服务器,所以我已经下载了Oracle Instant 客户端 x64。如果您使用的是 32 位 Windows,请下载 32 位客户端 否则它不会工作。 脚步 : - 1.安装oracle数据库11g XE

    2.安装WAMP

    3.下载合适的oracle即时客户端

    4.提取Oracle即时客户端的所有内容并全部复制 .DLL 文件并像这样粘贴到目录中 D:\wamp\bin\apache\Apache2.2.17\bin

    5.打开Wamp服务器,左键点击图标>php> PHP 扩展 > 仅检查 php_oci8_11g。 如果您使用的是比 11g 更早的 oracle 数据库,比如 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); ?>
    

    享受吧!!!!

    【讨论】:

      猜你喜欢
      • 2015-03-12
      • 2017-03-25
      • 2013-11-05
      • 1970-01-01
      • 1970-01-01
      • 2013-12-22
      • 2015-01-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多