#33596 [Bgs->Opn]: ADOMD COM works, DCOM doesn't

From: Date: Wed, 17 Aug 2005 08:48:44 +0000
Subject: #33596 [Bgs->Opn]: ADOMD COM works, DCOM doesn't
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-83683@lists.php.net to get a copy of this message
ID: 33596 User updated by: marko dot sirovnik at korona dot si Reported By: marko dot sirovnik at korona dot si -Status: Bogus +Status: Open Bug Type: COM related Operating System: Windows 2003 Server PHP Version: 5.0.4 New Comment: After some testing and checking securities on both servers I have found out that ADOMD is not meant to be a DCOM object. Namely, in the connection string is written all necessary connection information (server, user, pass, OLAP Cube, etc.). In my case this is stored in variable »$dsn«. Therefore, I have tried to connect to ADOMD COM object locally. In my reproduce code written above I have replaced the following line: $cat = new COM('ADOMD.Catalog', array( "Server" => "blackbox", "Username" => "administrator", "Password" => "default")); with line $cat = new COM('ADOMD.Catalog'); The connection with OLAP is established but the problem comes in the following line: $cat->ActiveConnection = $dsn; Result in Browser: Connection with OLAP has been established. Fatal error: Uncaught exception 'com_exception' with message 'Source: Microsoft® OLE DB Provider for Analysis Services Description: Property name was not recognized, 'Encoding'' So, communication is OK, only the parameters stored in “$dsn” are “wrong” or they supposed to be wrong. And why this doubt? I have checked the same syntax also with VisualScript code stored in VBS file and works fine with all parameters. Here is the testing example: Dim cat Set cat = CreateObject("ADOMD.Catalog") cat.ActiveConnection = "DATA SOURCE=blackbox;UID=sa;Initial Catalog=FoodMart 2000;Provider=MSOLAP;Encoding=windows-1250;Roles=skrbnik;" MsgBox cat.Name My impression is that ADOMD COM object works fine with windows technology (VisualBasic, ASP, etc.) but has problem when is called from PHP. I still suspect that could be a PHP internal problem when using ADOMD COM object. What is your opinion? Could you check this PHP and VBS code by yourself? Thanks, Marko Previous Comments: ------------------------------------------------------------------------ [2005-07-08 21:37:48] wez@php.net You have to configure the permissions on that DCOM server to allow the web server to access it. If you do that, you need to consider how it might affect the overall security of your system (say there was a remote eval() bug in something else running on your web server). Since this is a local configuration issue, it's not a bug in PHP, so I'm marking it as bogus. You need to read up on DCOM security and configuration to resolve your problem. ------------------------------------------------------------------------ [2005-07-08 20:38:37] marko dot sirovnik at korona dot si Thank you for your quick resonse. In my previous description I forgot to mention that Excel works also over DCOM already in version 4.3.6. So... I have upgraded PHP to ver.:5.0.4 (Mar 31 2005). The previous observations and problem remains at it was. Here is the actual result: ------------ Fatal error: Uncaught exception 'com_exception' with message 'Failed to create COM object `ADOMD.Catalog': Access is denied. ' in c:\Inetpub\wwwroot\aaa1.php:8 Stack trace: #0 c:\Inetpub\wwwroot\aaa1.php(8): com->com('ADOMD.Catalog', Array) #1 {main} thrown in c:\Inetpub\wwwroot\aaa1.php on line 8 ------------- Any idea what could be a problem? Thanks for the answer. Marko ------------------------------------------------------------------------ [2005-07-07 15:06:34] wez@php.net Thank you for taking the time to report a problem with PHP. Unfortunately you are not using a current version of PHP -- the problem might already be fixed. Please download a new PHP version from http://www.php.net/downloads.php If you are able to reproduce the bug with one of the latest versions of PHP, please change the PHP version on this bug report to the version you tested and change the status back to "Open". Again, thank you for your continued support of PHP. Please try PHP 5 ------------------------------------------------------------------------ [2005-07-06 23:55:06] marko dot sirovnik at korona dot si Description: ------------ Hi! I'm using ADOMD COM object in order to connect to OLAP database. When the Web Server and the DB Server are on the same computer I can manage to connect to OLAP DB (COM approach). But when DB Server is on on PC and Web Server on another PC it is impossible for me (DCOM connection). Short configuration: OS: Windows 2003 Server Web: IIS (comes with Win2003Srv) DB: Microsoft SQL Server OLAP: Microsoft Analysis Services COM/DCOM object: ADOMD ----------------------- PHP.INI [com] ;com.typelib_file = com.allow_dcom = true com.autoregister_typelib = true ;com.autoregister_casesensitive = false ;com.autoregister_verbose = true ------------------------ I made ADOMD DCOM test with Visual Basic and it works fine. Any help or idea how to remove this obstacle I appreciate. Thanks to All! Marko Reproduce code: --------------- <?php $dsn = 'DATA SOURCE=blackbox;UID=sa;Initial Catalog=FoodMart 2000;Provider=MSOLAP;Encoding=windows-1250;Roles=skrbnik;'; //$cat = new COM('ADOMD.Catalog'); $cat = new COM('ADOMD.Catalog', array( "Server" => "blackbox", "Username" => "administrator", "Password" => "default")); if (is_null($cat)) { echo '<B>Sorry, problem with COM object.</B><BR>'; echo '$cat = ' ; var_dump ($cat); return; } else { echo '<BR><B>Connection with OLAP has been established.</B>'; } $cat->ActiveConnection = $dsn; var_dump ($cat); ?> Expected result: ---------------- DCOM connection should be different then "Null". Furthermore, a message "Connection with OLAP has been established." is expected to be seen in Web browser. Actual result: -------------- With PHP Version 4.3.6 the following warrning has arrised: "Unable to obtain IDispatch interface for CLSID {228136B0-8BD3-11D0-B4EF-00A0C9138CA4}: Class not registered in c:\inetpub\wwwroot\aaa1.php on line 3 Sorry, problem with COM object." PHP Version 4.4.0RC3-dev: "PHP has encountered an Access Violation at 0184A8A8?$?? °Ew?????? ?U?\??????????c?O2????Ty ?m?OqeRV#88?N???????<_N>?U"?????JD&#378;p???r'???)JK]v^?M7???Z??6?C??P?\??v???8d?? <?/?" ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=33596&edit=1

« previous php.bugs (#83683) next »