簡體   English   中英

調用未定義的函數oci_connect,php_oci8_11g.dll,Windows 10,php5.6.24

[英]Call to undefined function oci_connect, php_oci8_11g.dll , windows 10, php5.6.24

我有一個簡單的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位版本。 我有ORACLE_HOME和TNS_ADMIN環境變量指向即時客戶端文件夾(C:\\ instantclient_11_2)。

我花了數小時的時間來嘗試不同的事情,但無濟於事。

我已經安裝了Microsoft Visual C ++ 2010運行時(x86)。 OCI8擴展需要此功能。 我已經安裝了Microsoft Visual C ++ 2012 Runtime(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() 

您收到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)。 確保刪除不需要的那個。

您一次只能啟用其中之一: extension=php_oci8.dll extension=php_oci8_11g.dll它們都啟用相同的OCI8擴展,但是它們需要不同的Oracle Instant Client版本。 您說您正在使用Instant Client 11.2,因此請注釋掉第一個擴展。

確保將Instant Client目錄添加到PATH

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM