oracle 调用未定义的函数oci_connect,php_oci8_11g.dll,windows 10,php5.6.24

uxhixvfz  于 2023-05-16  发布在  Oracle
关注(0)|答案(3)|浏览(156)

我有一个简单的PHP脚本:

<?php

            $DB = '//10.11.201.170:1521/XE';
            $DB_USER = 'BIOTPL';
            $DB_PASS = 'biotpl';
            $DB_CHAR = 'AL32UTF8';

            $conn = oci_connect($DB_USER, $DB_PASS, $DB, $DB_CHAR);
            if($conn)
            {
                echo "Successfully connected to Oracle.\n";
                OCILogoff($c);
                //$statement = oci_parse($conn, 'select 1 from dual');
                //oci_execute($statement);
                //$row = oci_fetch_array($statement, OCI_ASSOC+OCI_RETURN_NULLS);
            }
            else
            {
                $err = OCIError();
                echo "Connection failed." . $err[text];
            }  
?>

当我运行它(从浏览器或命令行)时,我得到错误::

Call to undefined function oci_connect

我用的是PHP 5.6.24。我已将php_oci8.dll和php_oci8_11g.dll复制到/ext文件夹。我有

extension=php_oci8.dll 
extension=php_oci8_11g.dll

在我的php.ini我已经安装了即时client_11_2 -尝试32位版本.我有指向即时客户端文件夹(C:\instantclient_11_2)的ORACLE_HOME和TNS_ADMIN环境变量。
我花了几个小时在几天内尝试不同的东西都无济于事。
我已经安装了Microsoft Visual C++ 2010运行时(x86)。这是OCI 8扩展所需的。我已经安装了Microsoft Visual C++ 2012运行时(x86)。这是PHP所需要的。
当我尝试以下命令时:

php --ri oci8

我有以下错误:

PHP Warning:  PHP Startup: Unable to load dynamic library 'C:\xampp\php\ext\php_oci8.dll' - %1 is not a valid Win32 application.
 in Unknown on line 0

Warning: PHP Startup: Unable to load dynamic library 'C:\xampp\php\ext\php_oci8.dll' - %1 is not a valid Win32 application.
 in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library 'C:\xampp\php\ext\php_oci8_11g.dll' - %1 is not a valid Win32 application.
 in Unknown on line 0

Warning: PHP Startup: Unable to load dynamic library 'C:\xampp\php\ext\php_oci8_11g.dll' - %1 is not a valid Win32 application.
 in Unknown on line 0
Extension 'oci8' not present.

如何删除以下错误?

Fatal error: Call to undefined function oci_connect()
zsohkypk

zsohkypk1#

您收到OCI8扩展的启动错误,表明您正在使用不受支持的PHP版本的DLL。您需要使用正确的一个,对于PHP 5.6.x来说,它是以下之一:

你需要选择一个与你的体系结构(x86或x64),编译器(vc 9,11,14)和线程安全(ts)或非线程安全(nts)php版本相匹配的,例如如果在x86上运行使用vc11编译的线程安全PHP 5.6.24,则应使用

php_oci8-2.0.8-5.6-ts-vc11-x86.zip
-------- ----- --- -- ---- --- ---
^        ^     ^   ^  ^    ^   ^
|        |     |   |  |    |   \_____ extension
|        |     |   |  |    \_________ architecture
|        |     |   |  \______________ compiler
|        |     |   \_________________ thread-safety mode
|        |     \_____________________ php version
|        \___________________________ extension version
\____________________________________ extension name

如果没有与您的PHP匹配的下载,那么它就不存在,您需要自己编译它。更多信息http://windows.php.net
顺便说一句:除了上面的,你一次只能使用一个oci扩展。你得到了这两个(php_oci8.dll和php_oci8_11g.dll)。确保删除你不需要的。

9wbgstp7

9wbgstp72#

您一次只能启用其中一项:extension=php_oci8.dll extension=php_oci8_11g.dll它们都启用相同的OCI8扩展,但需要不同的Oracle Instant Client版本。您说您使用的是Instant Client 11.2,因此请将第一个扩展注解掉。
确保将Instant Client目录添加到PATH

uujelgoq

uujelgoq3#

在我的情况下,最好是重新安装XAMPP

相关问题