|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2004-07-29 15:12 UTC] oguilloux at sopragroup dot com
Description:
------------
Using oci8 extention for connecting Oracle Database crash PHP (with and without Apache) when SID isn't found.
I'm working with PHP 5 (13 july version), Win 2K SP4. My oracle client is 8.1.7 and I wish connected to a Oracle 9.2.0.4 database. In PHP4, I had no problems in oci8, but now, PHP crash.
The SOLUTION is to use oracle extention which work even if database has some trouble.
In my PHP.INI, I use :
extension=php_gd2.dll
extension=php_oracle.dll
extension=php_oci8.dll
extension=php_sockets.dll
extension=php_mbstring.dll
extension=php_zip.dll
Reproduce code:
---------------
$argDatabasename = 'PNGRS24';
$cn = OCILogon('SYSTEM','MANAGER', "(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=RS24.PA.SOPRA)(PORT=1542))(CONNECT_DATA=(SID=$argDatabasename)))");
// BUT with ORACLE_LOGON() (not oci8) it's work !
Expected result:
----------------
That oci8 does work as well as oracle extention in PHP 5
Actual result:
--------------
(IN EVENTVIEWER, WITH LOG IN SYSINFO)
FOR APACHE 1.3.29 / PHP5
------------------------
Application popup?: apache.exe - Erreur d'application?: L'instruction ? "0x01822456" emploie l'adresse memoire "0x00000008". La memoire ne peut pas etre "read".
WITH PHP5 logs
--------------
PHP Warning: ociplogon() [<a href='function.ociplogon'>function.ociplogon</a>]: _oci_open_server: ORA-12514: TNS : le listener n'a pas pu resoudre le SERVICE_NAME figurant dans le descripteur de connexion in c:\work\WEB\LookSGBD.php on line 31.
IN DEBUGGER
-----------
My debugger tell me that it's crashed on php_oci8.dll at this code line (stack):
01492456 cmp dword ptr [eax+8],2
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Sun Oct 26 06:00:02 2025 UTC |
With this code (below) only, my PHP5 (cli version) doesn't terminate properly. (The program did not finish, it seem to wait about something that never happens). => It's seem to be "OCIParse" which doesn't work. When I use comments on this line code, the script finish and not when I use the command. $argDatabasename = 'PNGRS24'; $todo = "(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=RS24.PA.SOPRA)(PORT=1542))(CONNECT_DATA=(SID=$argDatabasename)))"; $cn = OCILogon('SYSTEM','MANAGER', $todo); $stmt = OCIParse($cn,"select * from cols"); $res = OCIExecute($stmt); ocilogoff($cn);