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] [EMAIL PROTECTED]
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] [EMAIL PROTECTED]
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źp???r'???)JK]v^?M7???Z??6?C??P?\??v???8d??
<?/?"
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=33596&edit=1