[PHP & Oracle] Connectie problemen

Pagina: 1
Acties:
  • 599 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik weet het ... PHP + Oracle zijn niet de beste maatjes om samen te werken,
maar het is de enige mogelijke werkwijze hier op het werk ...

Ik probeer een PHP-pagina te schrijven waar ik een waarde ingeef in een formulier,
en hij doorzoekt in de volledige Database (ongeveer: 130 tabellen met een
gemiddelde van 20 velden en gemiddelde 10 000 records)

Waarom ik dit nodig heb zal je denken ...

Ik werk nu een klein jaar in een bedrijfje waar ik query's moet schrijven
op een Duitse database die helemaal NIET gedocumenteerd is, en uit
ongeveer 130 tabellen bestaat met een gemiddeld aantal velden van 20.
(en gemiddeld 10 000 records, varierend van 5 tot 9 000 000

(het dings is ook allesbehalve rationeel opgebouwd)

Mijn enige redding om zaken terug te vinden zijn het programma zelf,
die op de database draait, en formulieren die afgedrukt worden. De
ontwikkelaars staan niet toe dat ik de broncode van de software krijg,
dus daar kan ik ook niet in zoeken.

Momenteel heb ik een rapport voor mij waarop gegevens staan die mijn
werkgever graag in een query wil zien ... ik weet niet waar die in de database staan
en ik kan natuurlijk onmogelijk de 130 * 20 * 10 000 = 26 000 000 (en meer wschl)
records overlopen. (want tabelnamen en velden hebben onmogelijke en onduidelijke namen)

Tabel AADAUENT met vb het veld BKZ ... naja, probeer dat maar eens te snappen.

Acties:
  • 0 Henk 'm!

  • vinnux
  • Registratie: Maart 2001
  • Niet online
En wat wil je precies weten?
Kijk hier maar eens naar http://nl3.php.net/oracle

Acties:
  • 0 Henk 'm!

  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Bedankt dat je dit met ons deelt, je hebt mijn sympathie :)

Maareh, wat is nu precies je probleem waarbij ik/wij je kunnen helpen?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php

$ru = "(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(Host = 192.168.5.6)(Port = 1521)) ";
$ru = $ru."(ADDRESS = (PROTOCOL = TCP)(Host = 192.168.5.6)(Port = 1526)))(CONNECT_DATA = (SID = a70)))";

$he = "(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(Host = 192.168.6.6)(Port = 1521)) ";
$he = $he."(ADDRESS = (PROTOCOL = TCP)(Host = 192.168.6.6)(Port = 1526)))(CONNECT_DATA = (SID = a71)))";

$ch = "(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(Host = 192.168.7.6)(Port = 1521)) ";
$ch = $ch."(ADDRESS = (PROTOCOL = TCP)(Host = 192.168.7.6)(Port = 1526)))(CONNECT_DATA = (SID = a72)))";

//$conn = OCILogOn("USER","PASS",$ru);
//$conn = odbc_connect("db_a70.world", "USER", "PASS");
//$conn = Ora_Logon("USER@db_a70.world","PASS");

?>

Dit heb ik al geprobeerd ... met alle mogelijke combinaties en permutaties van
;extension=php_oci8.dll
;extension=php_oracle.dll

En met een correcte extension directory

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
bigbeng schreef op maandag 20 juni 2005 @ 09:24:
Bedankt dat je dit met ons deelt, je hebt mijn sympathie :)

Maareh, wat is nu precies je probleem waarbij ik/wij je kunnen helpen?
Het probleem zelf hoeft niet opgelost worden, ik kan genoeg SQL en PHP
om de hele handel te klaren ... ik heb enkel problemen met de database-connectie.

(misschien een beetje over-geïnformeerd ... excuseer)

Acties:
  • 0 Henk 'm!

  • Vuurvlieg
  • Registratie: Januari 2000
  • Laatst online: 18-09 15:51
Wat voor foutmelding krijg je?

Acties:
  • 0 Henk 'm!

  • Varienaja
  • Registratie: Februari 2001
  • Laatst online: 14-06 16:43

Varienaja

Wie dit leest is gek.

Verwijderd schreef op maandag 20 juni 2005 @ 09:33:

Dit heb ik al geprobeerd ... met alle mogelijke combinaties en permutaties van
;extension=php_oci8.dll
;extension=php_oracle.dll

En met een correcte extension directory
Zo te zien ben je aan het proberen om tnsnames.ora na te bouwen in je code? Waarom doe je dat? Het lijkt mij dat je met een installatie van een Oracle client gewoon direct OCILogon() kunt gaan aanroepen.

Anyway: blijkbaar kom je niet ingelogd. Het eerste wat je dan doet is checken of tnsping werkt naar de server van jouw keuze. Daarna start je sql-plus, en probeer je in te loggen. Heb je dat al gedaan? En wat kwam daar uit?

Siditamentis astuentis pactum.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Bij elke van de drie mogelijkheden krijg ik een fout wanneer
ik extension=php_oci8.dll beschikbaar maak.

Bij : $conn = OCILogOn("USER","PASS",$ru);
Fatal error: Call to undefined function: ocilogon() in c:\inetpub\wwwroot\php\conn.php on line 12
PHP Warning: Unknown(): Unable to load dynamic library 'C:\PHP\extensions\php_oci8.dll' - The specified module could not be found. in Unknown on line 0

Bij : $conn = odbc_connect("db_a70.world", "USER", "PASS");
Warning: odbc_connect(): SQL error: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified, SQL state IM002 in SQLConnect in c:\inetpub\wwwroot\php\conn.php on line 13
PHP Warning: Unknown(): Unable to load dynamic library 'C:\PHP\extensions\php_oci8.dll' - The specified module could not be found. in Unknown on line 0

Bij : $conn = Ora_Logon("USER@db_a70.world","PASS");
Warning: Oracle: Connection Failed: ORA-12154: TNS:servicenaam kon niet worden herleid in c:\inetpub\wwwroot\php\conn.php on line 14
PHP Warning: Unknown(): Unable to load dynamic library 'C:\PHP\extensions\php_oci8.dll' - The specified module could not be found. in Unknown on line 0

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Varienaja schreef op maandag 20 juni 2005 @ 09:37:
[...]

Zo te zien ben je aan het proberen om tnsnames.ora na te bouwen in je code? Waarom doe je dat? Het lijkt mij dat je met een installatie van een Oracle client gewoon direct OCILogon() kunt gaan aanroepen.

Anyway: blijkbaar kom je niet ingelogd. Het eerste wat je dan doet is checken of tnsping werkt naar de server van jouw keuze. Daarna start je sql-plus, en probeer je in te loggen. Heb je dat al gedaan? En wat kwam daar uit?
Dat is een oplossing die ik teruggevonden heb op php.net dus ik meen dat daar niets aan hapert, aangezien mijn verbinding via gelijk welke query-builder/analyser en SQL*plus wel werkt ...
Mijn ODBC via Access werkt ook. (een beetje mank omdat de database te groot is voor Access)

Acties:
  • 0 Henk 'm!

  • DizzyWeb
  • Registratie: Februari 2001
  • Laatst online: 05-09 14:30

DizzyWeb

Ondertiteld

Het probleem lijkt me duidelijk:

PHP Warning: Unknown(): Unable to load dynamic library 'C:\PHP\extensions\php_oci8.dll' - The specified module could not be found. in Unknown on line 0

Die module is er gewoon niet.

Acties:
  • 0 Henk 'm!

  • Atari Paul
  • Registratie: November 2002
  • Laatst online: 13:04
Mja, het lijkt me duidelijk. De OCI module kan niet worden geladen.
Ik zou zeggen check je PATH settings eens.

Stability ?? My Atari still has it :)


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
DizzyWeb schreef op maandag 20 juni 2005 @ 09:50:
Het probleem lijkt me duidelijk:

PHP Warning: Unknown(): Unable to load dynamic library 'C:\PHP\extensions\php_oci8.dll' - The specified module could not be found. in Unknown on line 0

Die module is er gewoon niet.
Afbeeldingslocatie: http://splendidvending.be/php_oci8.gif

in php.ini
code:
1
2
; Directory in which the loadable extensions (modules) reside.
extension_dir = C:\PHP\extensions

Acties:
  • 0 Henk 'm!

  • DizzyWeb
  • Registratie: Februari 2001
  • Laatst online: 05-09 14:30

DizzyWeb

Ondertiteld

Toch beweert PHP dat ie de module niet kan vinden.

Maak eens een phpinfo() en check welke modules ie laad en wat PHP zelf zegt dat ie als extension_dir gebruikt.

Acties:
  • 0 Henk 'm!

  • Atari Paul
  • Registratie: November 2002
  • Laatst online: 13:04
Test eens even het volgende:

- kopieer php_oci8.dll een sin de system32 directory onder je windows directory

PS pas je de juiste php.ini aan ?

[ Voor 15% gewijzigd door Atari Paul op 20-06-2005 10:02 ]

Stability ?? My Atari still has it :)


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
DizzyWeb schreef op maandag 20 juni 2005 @ 09:59:
Toch beweert PHP dat ie de module niet kan vinden.

Maak eens een phpinfo() en check welke modules ie laad en wat PHP zelf zegt dat ie als extension_dir gebruikt.
uit php.info

Directive Local Value Master Value
extension_dir C:\PHP\extensions C:\PHP\extensions

oracle
Oracle Support enabled

Niets over OCI8 ... buiten de vermelding in het begin van phpinfo();
dat deze extension niet kan gelezen worden.

Sommige beweren ook dat het C:/PHP/extensions\ moet zijn met backslashes,
wat ik ook al geprobeerd heb, maar niets hielpen.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Atari Paul schreef op maandag 20 juni 2005 @ 10:00:
Test eens even het volgende:

- kopieer php_oci8.dll een sin de system32 directory onder je windows directory

PS pas je de juiste php.ini aan ?
Ik heb de php_oci8.dll naar overal verhuisd, maar nog niet naar de system32,
zal ik onmiddelijk eens proberen ... en ik pas wel degelijk de juiste php.ini aan,
(in de WINNT folder) Als ik de verkeerde zou aanpassen zou ik niet plotseling een
fout krijgen als ik de oci8-extension enable ...

EDIT: nope ... in SYSTEM32 plaatsen helpt voor geen meter ...
(jajaaa ... ik heb de extensions dir aangepast !)

[ Voor 10% gewijzigd door Verwijderd op 20-06-2005 10:10 ]


Acties:
  • 0 Henk 'm!

  • Atari Paul
  • Registratie: November 2002
  • Laatst online: 13:04
Verwijderd schreef op maandag 20 juni 2005 @ 10:07:
[...]


Ik heb de php_oci8.dll naar overal verhuisd, maar nog niet naar de system32,
zal ik onmiddelijk eens proberen ... en ik pas wel degelijk de juiste php.ini aan,
(in de WINNT folder) Als ik de verkeerde zou aanpassen zou ik niet plotseling een
fout krijgen als ik de oci8-extension enable ...
Daar heb je groot gelijk in :D

Stability ?? My Atari still has it :)


Acties:
  • 0 Henk 'm!

  • vinnux
  • Registratie: Maart 2001
  • Niet online
Als je IIS gebruikt probeer eens de gebruiker op Administrator te zetten. In het tabje " Directory Security"

[ Voor 7% gewijzigd door vinnux op 20-06-2005 10:09 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
vgouw schreef op maandag 20 juni 2005 @ 10:09:
Als je IIS gebruikt probeer eens de gebruiker op Administrator te zetten. In het tabje " Directory Security"
Deze oplossing heb ik ook al tegengekomen ... maar lijk mee qua security niet echt zo heel veilig.
En teveens is er het probleem dat de systeembeheerder ... mij (als DBA-er en andere knutselwerkjes) geen recht geeft om rights te wijzgen ... , ik heb het dus al willen proberen, maar ik kon niet, ik zal
hem bij deze proberen te dwingen nu zijn overste hier is ... Hopelijk is dit de oplossing, maar dan lijkt
het me toch nog een security probleem ...

Acties:
  • 0 Henk 'm!

  • vinnux
  • Registratie: Maart 2001
  • Niet online
Ik weet dat het een security issue is, maar eerst ff alles openzetten en daarna langzaam weer dicht knijpen, zo heb ik het ook gedaan.

Je hebt namelijk rechten nodig op een aantal mappen van de Oracle Client. Welke geinstalleerd moet zijn.

[ Voor 31% gewijzigd door vinnux op 20-06-2005 10:18 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
PHP draait hier local op mijn computer,
maar Oracle staat op een remote server.
(had je wel al kunnen zien aan het script)

Maar aangezien SQL*plus en mijn ODBC's
werken, denk ik dat de rechten aan de kant
van Oracle wel al snor zitten...

Acties:
  • 0 Henk 'm!

  • vinnux
  • Registratie: Maart 2001
  • Niet online
Verwijderd schreef op maandag 20 juni 2005 @ 10:28:
PHP draait hier local op mijn computer,
maar Oracle staat op een remote server.
(had je wel al kunnen zien aan het script)

Maar aangezien SQL*plus en mijn ODBC's
werken, denk ik dat de rechten aan de kant
van Oracle wel al snor zitten...
Heb je op je lokale pc al de gebruiker op Administrator gezet van IIS?

Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op maandag 20 juni 2005 @ 09:17:
Ik weet het ... PHP + Oracle zijn niet de beste maatjes om samen te werken,
maar het is de enige mogelijke werkwijze hier op het werk ...
Waren niet de beste vriendjes, maar Oracle heeft ingezien dat PHP wel een belangrijke speler is.

Kijk eens op de site van Oracle voor je probleem PHP Developer Center
Pagina: 1