Ich habe einen einfachen PHP-Skript:Call to undefined function oci_connect, php_oci8_12c.dll, Fenster 8.1, php5.6.6
<?php
$db_user = 'myusername';
$db_pass = 'mypassword';
$db_sid = 'mysid';
$conn = oci_connect($db_user, $db_pass, $db_sid);
?>
Wenn ich es laufe (von einem Browser oder von der Kommandozeile), erhalte ich der Fehler:
Call to undefined function oci_connect
ich bin mit pHP 5.6.6, die bereits dort mit php_oci8_12c.dll kam.
Ich habe extension=php_oci8_12c.dll
in meiner php.ini
ich Instant-Client installiert haben (12.1) - versucht, 32-Bit-Version und 64-Bit-Version
Ich habe ORACLE_HOME und TNS_ADMIN Umgebungsvariablen zu dem Zeitpunkt Client-Ordner zeigen (C: \ instantclient_12_1).
Ich habe auch C: \ instantclient_12_1 in meinem Weg
Ich habe einen tnsnames.ora im selben Ordner mit diesem entsprechenden Eintrag in es:
MYSID =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = myhost.net)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = MYSERVICE)
)
)
Ich habe auch heruntergeladen sqldeveloper von http://www.oracle.com/technetwork/developer-tools/sql-developer/downloads/index.html
SQLDeveloper funktioniert, erkennt die oben genannten tnsnames.ora und verbindet und führt erfolgreich eine Abfrage auf der gleichen Datenbank, die mein PHP-Skript versucht zuzugreifen.
Ich habe mehrere Stunden mehrere Tage damit verbracht, verschiedene Dinge ohne Erfolg auszuprobieren.
Ich verwende:
php 5.6.6
windows 8.1
IIS (so no answers involving apache please)
cmd (run as administrator)
Oracle Database 11g Enterprise Edition 11.2.0.3.0
einige andere Informationen, die nützlich sein könnte:
würde ich am liebsten OCI 1.4.10 verwenden, um den Produktionsserver passen, aber nicht allzu besorgt über die zur Zeit.
pear install oci8-1.4.10.tgz
gibt mir diese Fehlermeldung:
The DSP oci8.dsp does not exist
ich keine Erklärung zu diesem Fehler finden kann, die mir etwas bedeutet.
Was ich vermisst - kann mir jemand helfen
EDIT:
Ich habe die verschiedenen Vorschläge in anderen Beiträgen auf Stackoverflow versucht, nämlich:
extension=oci8.so
mit und ohne extension=php_oci8_12c.dll
Ich habe nicht die Zeile extension=php_oracle.dll
in meiner Datei php.ini
EDIT:
phpinfo sagt mir, dass ich das richtige PHP verwende.ini-Datei:
Loaded Configuration File => C:\php5.6.6\php.ini
Diese Linie von phpinfo auch von Nutzen sein könnte:
Configure Command => cscript /nologo configure.js "--enable-snapshot-build" "--enable-debug-pack" "--disable-zts" "--disable-isapi" "--disable-nsapi" "--without-mssql" "--without-pdo-mssql" "--without-pi3web" "--with-pdo-oci=c:\php-sdk\oracle\x86\instantclient_12_1\sdk,shared" "--with-oci8-12c=c:\php-sdk\oracle\x86\instantclient_12_1\sdk,shared" "--with-enchant=shared" "--enable-object-out-dir=../obj/" "--enable-com-dotnet=shared" "--with-mcrypt=static" "--without-analyzer" "--with-pgo"
EDIT:
Es scheint, dass dsp Dateien VC++ Projektdateien - ich bin jetzt wagen zu lernen, wie man um eine PHP-Erweiterung zu erstellen, und hoffentlich wenn ich das gemacht habe, werde ich genug Wissen haben, um den OCI8 1.4.10 Quellcode in eine DLL zu kompilieren, die auf Windows 8 funktioniert - es sei denn, jemand rettet mich mit der Antwort auf diese Frage Sieht so aus, als würde es einige Zeit dauern :-)
EDIT:
Hinzufügen display_startup_errors = On
zu php.ini mir sagt, dass die OCI dll
Überprüfen Sie bitte dem Link: - http://stackoverflow.com/questions/22478387/call-to-undefined- Funktion-Oci-Verbindung. (zweite Antwort) Oder http://stackoverflow.com/questions/8635881/fatal-error-call-to-undefined-function-oci-connect. (erste Antwort) –
Versuchte diese bereits – Graham
Überprüfen Sie, ob Sie eine Kopie von 'msvcr71.dll' irgendwo in Ihrem Pfad haben. – timclutton