[PHP] Configure command aanpassen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Avalaxy
  • Registratie: Juni 2006
  • Laatst online: 12:46
Ik probeer via PHP_PDO_OCI te connecten met Oracle, daarvoor heb ik alle juiste .dll's in /ext/ folder van PHP gezet, in php.ini de juiste extension aangezet en in php.ini tevens de extension_dir goed ingesteld. Desondanks blijf ik telkens maar een error krijgen dat hij de driver niet kan vinden.

Nu zag ik in phpinfo() dat bovenaan de configure command fout staat, nml:

code:
1
cscript /nologo configure.js [snip] "--with-pdo-oci=D:\php-sdk\oracle\instantclient10\sdk,shared" "--with-oci8=D:\php-sdk\oracle\instantclient10\sdk,shared" "--with-oci8-11g=D:\php-sdk\oracle\instantclient11\sdk,shared" "--with-enchant=shared"


Dit klopt niet, want ik heb niet eens een D schijf/partitie! Mijn PHP installatie staat onder C:\wamp\bin\php\php5.3.0.

Ik vermoed zelf dat door het aanpassen van dit path ik de driver wel werkend krijg, echter heb ik met uren googlen echt NIET kunnen vinden hoe je dit instelt... Het enige dat ik kan vinden gaat over het compileren van de sourcecode onder Linux, maar ik draai Windows 7.

Specs:
Windows 7 x64
PHP5.3.0 via WAMP
PHP path: C:\wamp\bin\php\php5.3.0

Wie kan mij helpen? :'(

Oja, het gaat hier dan wel over client software, maar ik denk dat ik hier veel doelgerichtere antwoorden krijg.

[ Voor 5% gewijzigd door Avalaxy op 03-11-2010 16:45 ]


Acties:
  • 0 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

In principe worden volgens mij die modules op die manier meegecompileerd in je php-executable dus maakt het niet uit dat dat pad op jouw machine niet bestaat. Gebruik je wel de juiste php.ini?
On Windows you can put the Oracle Instant Client (or ORACLE_HOME style) libraries in any path. They don't have to be in D:\php-sdk\oracle\instantclient\.....
[...]
As long as PATH is set include the actual Oracle library location on your machine, then PHP should work. If it doesn't log a bug at php.net so the creator of the DLLs can resolve the problem.
Mocht ik het mis hebben: PHP: internals:windows:stepbystepbuild [PHP Wiki] :P

[ Voor 96% gewijzigd door CodeCaster op 03-11-2010 19:17 ]

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


Acties:
  • 0 Henk 'm!

  • Avalaxy
  • Registratie: Juni 2006
  • Laatst online: 12:46
CodeCaster schreef op woensdag 03 november 2010 @ 19:07:
In principe worden volgens mij die modules op die manier meegecompileerd in je php-executable dus maakt het niet uit dat dat pad op jouw machine niet bestaat. Gebruik je wel de juiste php.ini?


[...]


Mocht ik het mis hebben: PHP: internals:windows:stepbystepbuild [PHP Wiki] :P
Als ik het goed begrijp moet je in je PATH system variable een link toevoegen naar Oracle Instant Client, dit heb ik gedaan. Mijn path begin met: C:\wamp\instantclient_11_2.

Alle threads die ik op internet vind (die jij aanhaalde had ik ook al gevonden) reppen voornamelijk over Linux, en dan gaat het ook over het hercompileren van de source... Wel erg raar, ik heb gewoon PHP5.3.0 vanuit WAMP, dat zou moeten werken... Ik snap niet waarom het bij mij dan niet werkt :?

Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Dit gaat weliswaar over XAMPP ipv. WAMP maar wellicht staan er wat pointers in:
http://www.apachefriends....8a276697616c8a&view=print

Acties:
  • 0 Henk 'm!

  • Avalaxy
  • Registratie: Juni 2006
  • Laatst online: 12:46
Cartman! schreef op woensdag 03 november 2010 @ 21:42:
Dit gaat weliswaar over XAMPP ipv. WAMP maar wellicht staan er wat pointers in:
http://www.apachefriends....8a276697616c8a&view=print
Zover ik kan zien niet. Ik heb ook dat ik geen OCI8 of PDO_OCI zie staan in m'n phpinfo(), maar dat lijkt me niet gek als hij die extensie/driver niet eens weet te vinden.

Reïnstall is mogelijk, maar ik zie niet echt hoe dat m'n probleem op gaat lossen, en om nou de source compleet opnieuw te gaan compileren... :P

Acties:
  • 0 Henk 'm!

  • winkbrace
  • Registratie: Augustus 2008
  • Laatst online: 24-08 15:17
Die oci modules zijn erg afhankelijk van versie van je Oracle of je Oracle client.
Je hebt de instantclient van Oracle 11R2 geïnstalleerd. Als je Oracle op je eigen machine hebt draaien is dat natuurlijk niet nodig ;) (ik zeg het maar)
Voor Oracle 11 heb je de module php_oci8_11g
Installatie van oci met WAMP is zeer eenvoudig.
linkermuisknop op wamp icoontje -> php -> php extensions -> vinkje bij php_oci8_11g -> restart all services

Is er nog een reden dat je liever die php_pdo_oci module wilt gebruiken?

Een algemene php & oracle site met veel info: http://wiki.oracle.com/page/PHP+Oracle+FAQ
o.a. een link naar dit gratis boek: http://www.oracle.com/tec...oracle-manual-098250.html

Acties:
  • 0 Henk 'm!

  • Avalaxy
  • Registratie: Juni 2006
  • Laatst online: 12:46
BazzPsychoNut schreef op vrijdag 05 november 2010 @ 14:35:
Die oci modules zijn erg afhankelijk van versie van je Oracle of je Oracle client.
Je hebt de instantclient van Oracle 11R2 geïnstalleerd. Als je Oracle op je eigen machine hebt draaien is dat natuurlijk niet nodig ;) (ik zeg het maar)
We hebben een Oracle 11g R2 database draaien op een (externe) server :)
Voor Oracle 11 heb je de module php_oci8_11g
Installatie van oci met WAMP is zeer eenvoudig.
linkermuisknop op wamp icoontje -> php -> php extensions -> vinkje bij php_oci8_11g -> restart all services
Dat heb ik gedaan, maar welke driver ik ook kies, geen een herkent ie :o
Is er nog een reden dat je liever die php_pdo_oci module wilt gebruiken?
Zover ik heb begrepen zijn PHP_OCI8 en PHP_OCI8_11G voor gebruik icm oci_connect(), waarmee je zover ik weet vast zit aan een vaste set functies. Wij willen graag PDO gebruiken vanwege de flexibiliteit richting andere platformen.
Een algemene php & oracle site met veel info: http://wiki.oracle.com/page/PHP+Oracle+FAQ
o.a. een link naar dit gratis boek: http://www.oracle.com/tec...oracle-manual-098250.html
Die linkjes heb ik al van top tot teen doorgenomen (ook het boek), heb in principe zelfs precies die voorbeelden geprobeerd en gereproduceerd, desondanks werkt het niet. Dit doet mij vermoeden dat het probleem toch ligt bij dat Configure Command in phpinfo() :?

Bedankt voor je reactie :)

Acties:
  • 0 Henk 'm!

  • winkbrace
  • Registratie: Augustus 2008
  • Laatst online: 24-08 15:17
Hmm.. En je kunt wel buiten php met die db verbinden?
En heb je oci8_11g geprobeerd?
En is je pdo_oci wel ergens succesvol op een server geïnstalleerd?

Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Misschien is het wel nuttig om te weten wat dat configure precies is. Het is een script waarmee makefiles worden gegenereerd waarmee vervolgens de sourcecode van PHP gecompiled wordt naar uitvoerbare code (binaries). Die compileslag heb jij niet zelf gedaan, en dus is die configure-regel voor jou niet van belang, behalve dat je weet hoe de binary oorspronkelijk gebouwd is. De bestandsverwijzingen die daarin staan, zijn dus verwijzingen naar bestanden op het systeem waar PHP gecompileerd is, maar worden nu niet meer gebruikt.

Als je die configure "aan wilt passen", zul je dus zelf moeten compilen, een andere binary moeten regelen die wel precies doet wat je wilt, of met dynamische libraries (of 'extensies') werken, wat betekent dat je de verwijzingen naar die dynamische libraries op moet nemen in je php.ini

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • Avalaxy
  • Registratie: Juni 2006
  • Laatst online: 12:46
BazzPsychoNut schreef op maandag 08 november 2010 @ 15:42:
Hmm.. En je kunt wel buiten php met die db verbinden?
Vanuit Oracle SQL Developer wel, met exact dezelfde gegevens. Ook kan ik via de webinterface in de Enterprise Manager komen (extern), maar dat loopt via een andere port :)
En heb je oci8_11g geprobeerd?
Yep. PHP_PDO_OCI, PHP_OCI8 en PHP_OCI8_11G.

Bij de OCI8 en OCI8_11G krijg ik (met oci_pconnect() overigens de volgende error:
Fatal error: Call to undefined function oci_pconnect() in C:\Users\Leon\Development\index.php on line 6
Dit terwijl de extensie wel degelijk is ingeschakeld in WAMP!
En is je pdo_oci wel ergens succesvol op een server geïnstalleerd?
Op de server waar de database draait...?
drm schreef op dinsdag 09 november 2010 @ 21:33:
Misschien is het wel nuttig om te weten wat dat configure precies is. Het is een script waarmee makefiles worden gegenereerd waarmee vervolgens de sourcecode van PHP gecompiled wordt naar uitvoerbare code (binaries). Die compileslag heb jij niet zelf gedaan, en dus is die configure-regel voor jou niet van belang, behalve dat je weet hoe de binary oorspronkelijk gebouwd is. De bestandsverwijzingen die daarin staan, zijn dus verwijzingen naar bestanden op het systeem waar PHP gecompileerd is, maar worden nu niet meer gebruikt.

Als je die configure "aan wilt passen", zul je dus zelf moeten compilen, een andere binary moeten regelen die wel precies doet wat je wilt, of met dynamische libraries (of 'extensies') werken, wat betekent dat je de verwijzingen naar die dynamische libraries op moet nemen in je php.ini
Hmm, dat klinkt alsof het de uitwisselbaarheid tussen verschillende development environments niet bepaald ten goede komt.

[ Voor 39% gewijzigd door Avalaxy op 11-11-2010 15:04 ]


  • Kalentum
  • Registratie: Juni 2004
  • Laatst online: 16:37
Avalaxy schreef op donderdag 11 november 2010 @ 15:03:
Bij de OCI8 en OCI8_11G krijg ik (met oci_pconnect() overigens de volgende error:


[...]


Dit terwijl de extensie wel degelijk is ingeschakeld in WAMP!
Krijg je ook startup errors? Als PHP een bepaalde extension niet kan laden dan wordt dit beschouwd als een start up error. Deze worden niet via de browser gerapporteerd, php doet het dan verder wel gewoon, totdat je een functie uit die extension gebruikt.

Zie bv je Apache error log of zet display_startup_errors aan in php.ini

  • Avalaxy
  • Registratie: Juni 2006
  • Laatst online: 12:46
rutgerw schreef op donderdag 11 november 2010 @ 15:21:
[...]


Krijg je ook startup errors? Als PHP een bepaalde extension niet kan laden dan wordt dit beschouwd als een start up error. Deze worden niet via de browser gerapporteerd, php doet het dan verder wel gewoon, totdat je een functie uit die extension gebruikt.

Zie bv je Apache error log of zet display_startup_errors aan in php.ini
display_startup_errors staat aan maar doet niks. In de Apache logfiles vind ik wel dit:
PHP Warning: PHP Startup: Unable to load dynamic library 'c:/wamp/bin/php/php5.3.0/ext/php_pdo_oci.dll' - %1 is not a valid Win32 application.\r\n in Unknown on line 0
Ik ga even googlen wat het betekent, ik weet niet wat ik me in moet denken bij %1 :P

Acties:
  • 0 Henk 'm!

  • Avalaxy
  • Registratie: Juni 2006
  • Laatst online: 12:46
Even een update... Ik heb heel WAMP en de Oracle Instantclient er volledig afgegooid en alles opnieuw (deze keer volledig handmatig) geïnstalleerd.

Dit zijn de stappen die ik heb uitgevoerd:
- Apache 2.2 geïnstalleerd
- PHP5.3.3 x86 VC6 Thread-Safe geïnstalleerd
- Apache met PHP geconfigureerd
- extension_dir van PHP goedgezet en de php_pdo_oci extensie aangezet in php.ini
- Oracle Instantclient 11.2 gedownload en toegevoegd aan mijn PATH system variable
- PHP na de Instantclient toegevoegd aan de PATH

Wederom krijg ik dezelfde error:
PHP Warning: PHP Startup: Unable to load dynamic library 'ext\\php_pdo_oci.dll' - %1 is not a valid Win32 application.\r\n in Unknown on line 0
Dit krijg ik alleen bij de PDO extensie, niet bij alle overige PHP extensies die ik aan heb gezet.

Echter kan ik niet echt vinden met google wat nou de oplossing voor dit probleem is. Ik heb de DLL geprobeerd te zoeken met google en de mijne ter vervangen, maar dit helpt niet.

Het lijkt mij dat de error inhoudt dat de DLL die ik heb niet draait onder mijn Windows-versie (Windows 7 x64), alleen kan ik nergens een andere versie vinden of iets dergelijks. Anyone?

Oja, ik heb ook gekeken naar het compileren van m'n eigen build, maar ik kom er niet echt uit met die benodigde packages, onder andere omdat sommige mandatory packages niet te krijgen zijn :? Maar als ik bovenstaand probleem oplos is het hercompileren niet nodig :)




Edit: omg, het werkte niet doordat ik de x64 versie van Instantclient had, terwijl PHP in x86 is. Met de x64 versie van de Instantclient vindt hij de driver wel _/-\o_ _/-\o_ _/-\o_

Helaas kan ik niet testen of het daadwerkelijke connecten nu werkt omdat onze databaseserver uitstaat :P

* Avalaxy voelt zich een }:O

Edit 2: na het fixen van PDO kreeg ik een ORA12514 TNSlistener error. Die heb ik weten op te lossen door een easy connect string (te vinden in tnsnames.ora) te gebruiken in plaats van een standaard hostname + user + password :) Wellicht een nuttige tip voor mensen die in de toekomst tegen hetzelfde probleem aanlopen (volgens Google zijn het er heel wat).

[ Voor 29% gewijzigd door Avalaxy op 15-11-2010 01:19 ]

Pagina: 1