2016-09-23 27 views
1
私は、Apache 2.4 x64およびPHP7のx64をインストールし、PHP OCIの64ビットライブラリをダウンロードするが、問題は、私は、CLIからPHPスクリプトを実行するたびに、それは言うことですしている

PHPのOCI8拡張は、PHP 7で動作していない64ビット

PHPの起動:動的ライブラリ をロードできません 'E:\ソフトウェア\サーバー\ PHP-7.0.11-Win32の-VC14-のx64 \ののext \のphp_oci8_11g.dll' - %1は

また、有効なWin32アプリケーションではありませんURLからWebアプリケーションを呼び出すと、

と表示されます未定義の関数はoci_pconnect()

から

コールは、私がダウンロードしたOCI拡張も64ビットです。ここにリンクがある:

http://windows.php.net/downloads/pecl/releases/oci8/2.1.2/php_oci8-2.1.2-7.0-ts-vc14-x64.zip

誰かがこの問題に導くことができます。

+0

私はOracleを使用しませんが、同じWAMPバージョンを実行するので、v2.1.2はあなたとv2.1.1のようにテストされており、両方ともロードされません。 DLLのような悪いですね。 – Eric

+0

php5とphp7は互換性がないので、php_oci.dllがphp7用に作られていることを確認してください。注:スタンドアロンPHP(PHP.EXE)でApacheを使用せずにテストを開始することができます。 –

答えて

2

おそらくTS(スレッドセーフ)とNTS(スレッド非安全)のバージョンが混在しています。これらは一緒には機能しません。 PHPスレッドの安全性についての詳細は、hereをご覧ください。

PHP 7.0.11 NTS x64、一緒に完全によくOCI8 2.1.2 NTS x64、およびinstantclientに11.2.0.4.0 x64仕事(私はこれらの3つのファイルをダウンロードし、新鮮なWin2K8環境でそれらをテストしてみました)。

最新のVC14ランタイム(Visual Studio 2015)をインストールし、PATHシステム環境変数を変更して、PHPおよびInstantClientのディレクトリを含めるようにしてください。 C:\php;C:\instantclient_11_2

+0

スレッドセーフパッケージを使用しました。問題は、インスタントクライアントファイルであることが判明しました。これは、instantclientのすべてのファイルをc:\ windowsおよびc:\ windows \ system32ディレクトリにコピーすることによって解決されました。環境変数でそのパスを指定するコメントはもっと理にかなっています。私は試してみます。ありがとう –

+0

私は同じ問題がありますが、私の問題はc:\ windowsとc:\ windows \ system32ディレクトリにファイルをコピーするだけでは解決しません。私の質問を確認してくださいhttps://stackoverflow.com/questions/46640455/php-oci8-ext-not-loading-unable-to-load-dynamic-library?noredirect=1#comment80230275_46640455 –

関連する問題