对啊,就是使用COM,不过你的activex要有opencert方法噶连接acc我就是使用adodb.connection的<?php
$cnStr="provider=microsoft.jet.oledb.4.0;data source=".realpath("db.mdb");
$cn;
function OpenDB()
{
global $cn,$cnStr;
$cn=new COM("adodb.connection");
$cn->open($cnStr);
}function CloseDB()
{
global $cn;
$cn->close();
$cn=null;
}
?>

解决方案 »

  1.   

    问题还是没解决啊,Fatal error: Uncaught exception 'com_exception' with message '<b>Source:</b> Microsoft JET Database Engine<br/><b>Description:</b> 不可识别的数据库格式 'C:\Program Files\Apache Group\Apache2\htdocs\AXSecurity.ocx'。' in C:\Program Files\Apache Group\Apache2\htdocs\getcert.php:8 Stack trace: #0 C:\Program Files\Apache Group\Apache2\htdocs\getcert.php(8): com->open('provider=micros...') #1 C:\Program Files\Apache Group\Apache2\htdocs\getcert.php(18): OpenDB() #2 {main} thrown in C:\Program Files\Apache Group\Apache2\htdocs\getcert.php on line 8
    报了这个错误~~   帮我看看把~对php不熟啊!!
      

  2.   

    <?php
    $cnStr="provider=microsoft.jet.oledb.4.0;data source=".realpath("AXSecurity.ocx");
    $cn;
    function OpenDB()
    {
        global $cn,$cnStr;
        $cn=new COM("adodb.connection");
        $cn->open($cnStr);
    echo aaaa;
    }function CloseDB()
    {
        global $cn;
        $cn->close();
        $cn=null;
    }
    OpenDB();
    ?>这是仿照你写得代码~
      

  3.   

    我给你的只是个例子而已啊例子是怎么使用COM连接access数据库的,你的是activex,不能那样使用噶你要先注册你的activex,然后在注册表中生成clsid和名称COM需要的参数是你activex生成的clsid的名称
      

  4.   

    控件我注册完了,但是注册表中生成clsid和名称 怎么操作啊  不好意思我第一次用控件~
      

  5.   

    你用什么编写的ocx??如果是vb,则clsid的名称是“你的工程名称.类名称”
      

  6.   

    <OBJECT id="AXSecurity"  codeBase="AXSecurity.cab#version=1,0,0,1"
     classid="CLSID:F5A1E785-0D4A-4E07-A3E7-15B1D3AF52E6" >
    </OBJECT>  这个是以前用jsp调用控件时的代码~ 里面的  CLSID可以用吗~还有这个压缩文件AXSecurity.cab怎么用啊 ?
     <?php 
    $obj=new COM("F5A1E785-0D4A-4E07-A3E7-15B1D3AF52E6"); 
    echo $obj->OpenCert(0, 0, 0); 
    echo $obj->GetLastError(); 
    ?> 
    这样可以了把?
      

  7.   

    clsid我没用过一般都是用cls的名称那你试试看罗
      

  8.   

    没解决~~报错是参数不正确
    Fatal error: Uncaught exception 'com_exception' with message 'Failed to create COM object `F5A1E785-0D4A-4E07-A3E7-15B1D3AF52E6': 无效的语法 ' in C:\Program Files\Apache Group\Apache2\htdocs\getcert.php:2 Stack trace: #0 C:\Program Files\Apache Group\Apache2\htdocs\getcert.php(2): com->com('F5A1E785-0D4A-4...') #1 {main} thrown in C:\Program Files\Apache Group\Apache2\htdocs\getcert.php on line 2
      

  9.   

    <OBJECT id="AXSecurity"  codeBase="AXSecurity.cab#version=1,0,0,1" 
    classid="CLSID:F5A1E785-0D4A-4E07-A3E7-15B1D3AF52E6" > 
    </OBJECT>
    ??????你这是可视的客户端控件,不能在服务器端用php调用
      

  10.   

    那怎么改,我的是服务器端的Php,但是得用这控件完成对证书的一些操作~
      

  11.   

    如果客户端的验证控件,在linux系统下可能无法使用即linux系统不支持activex,所以有些浏览器控件就没法用
    如果是服务器的端com,理论是可以能过com调用的,要注意的是传值和返回值数据类型
      

  12.   

    我配置windows下的apache+php功能的服务器,然后在apache里面的htdots里写上调用控件的php页面  
    总是不成功,调<?phpinfo();?>能显示phpinfo的信息, 现在页面是这样写的
    <?php
        $cn=new COM("F5A1E785-0D4A-4E07-A3E7-15B1D3AF52E6");
        $cn->OpenCert(0,0,0);
    echo $cn;
    ?>  报的错误是:
    Fatal error: Uncaught exception 'com_exception' with message 'Failed to create COM object `F5A1E785-0D4A-4E07-A3E7-15B1D3AF52E6': 无效的语法 ' in C:\Program Files\Apache Group\Apache2\htdocs\getcert.php:2 Stack trace: #0 C:\Program Files\Apache Group\Apache2\htdocs\getcert.php(2): com->com('F5A1E785-0D4A-4...') #1 {main} thrown in C:\Program Files\Apache Group\Apache2\htdocs\getcert.php on line 2  好像是控件没用对~帮我看看把   急死了
      

  13.   

    如果需要clsid创建需要{}括起,大括号你确定你在服务器注册过这个ocx??
    我创建adodb.connection没问题的啊,使用clsid的话也可以,只是需要{}括起,大括号
    <?php
    //下面代码调用COM组件都没问题的
    $cnByClsID=new COM("{00000514-0000-0010-8000-00AA006D2EA4}");//adodb.connection对应的clsid
    //$cnByClsID=new COM("00000514-0000-0010-8000-00AA006D2EA4");//===>这样会出错$cnByClsName=new COM("adodb.connection");
    ?>
      

  14.   

    我在cmd中用regsvr32 capicom.dll
    regsvr32 AXSecurity.ocx算是注册吗?
    <?php
        $cn=new COM("{F5A1E785-0D4A-4E07-A3E7-15B1D3AF52E6}");
    echo $cn;
    ?>我用这个试了试,还是报错
    Fatal error: Uncaught exception 'com_exception' with message 'Error [0x8000ffff] 灾难性故障 ' in C:\Program Files\Apache Group\Apache2\htdocs\getcert.php:3 Stack trace: #0 C:\Program Files\Apache Group\Apache2\htdocs\getcert.php(3): unknown() #1 {main} thrown in C:\Program Files\Apache Group\Apache2\htdocs\getcert.php on line 3
    我看了我的那个CLSID是F5A1E785-0D4A-4E07-A3E7-15B1D3AF52E6没错
      

  15.   

    adodb.connection这个是什么  我好像是没用到~
      

  16.   

    com组件就是这样注册adodb.connection只是一个数据连接对象的clsname如果你不知道你的ocx的clsname,你去注册表中HKEY_CLASSES_ROOT分支下找到值为AXSecurity.ocx的项,左边的栏目就是这个ocx的clsname或者clsid了你就使用这个创建
      

  17.   

    看样子是Windows系统中的capicom,如果是的话不需要注册的
    建议你用PHP中的PECL扩展完成相应的操作!
      

  18.   

    我在注册表当中找到clsid了,但是还是不对~
    <?php
        $cn=new COM("{F5A1E785-0D4A-4E07-A3E7-15B1D3AF52E6}");
        echo $cn;
    ?>
    要是这样在php嵌入html代码,可以吗?要是可以怎么调用控件的函数啊~
    <OBJECT id="AXSecurity"  codeBase="AXSecurity.cab#version=1,0,0,1" 
    classid="CLSID:F5A1E785-0D4A-4E07-A3E7-15B1D3AF52E6" > 
    </OBJECT> 
      

  19.   

    <html>
    <body>
    <?php
      echo AXSecurity->OpenCert(0,0,0);
    ?>
    <OBJECT id="AXSecurity"  codeBase="AXSecurity.cab#version=1,0,0,1"
     classid="CLSID:F5A1E785-0D4A-4E07-A3E7-15B1D3AF52E6" >
    </OBJECT>
    </body>
    </html>
    有这种形式调控件  还是不行~~错在哪了     各位指点以下把~
      

  20.   

    如果控件是在客户端安装的,可以用javascript
    <html>
    <body onload="OnInit();">
    <SCRIPT LANGUAGE="JavaScript">
      var mycontrol=null;  function OnInit()
      {
        mycontrol=AXSecurity;
        mycontrol.OpenCert(0,0,0);
      }
    </script>
    <OBJECT id="AXSecurity"  codeBase="AXSecurity.cab#version=1,0,0,1"
    classid="CLSID:F5A1E785-0D4A-4E07-A3E7-15B1D3AF52E6" >
    </OBJECT>
    </body>
    </html> 
      

  21.   

    总算有点进展了……你是Windows服务器吗?版本是什么?PHP中对COM的支持打开了吗?如果没有,需要修改php.ini文件中的某一段。某些操作系统,还必须用DCOMConfig配置某个COM包的Interactive启动……你确信你要这么做吗?==============我到有个建议,不如这样:1. 既然你的那个ActiveX包已经好了,那么不妨用VB、VC等语言将其打包为一个WebService;
    2. 在PHP中调用这个WS来间接达到目的……
      

  22.   

    是windows xp 32 
    php.ini没动过~~怎么改啊?
    [COM]
    ; path to a file containing GUIDs, IIDs or filenames of files with TypeLibs
    ;com.typelib_file =
    ; allow Distributed-COM calls
    ;com.allow_dcom = true
    ; autoregister constants of a components typlib on com_load()
    ;com.autoregister_typelib = true
    ; register constants casesensitive
    ;com.autoregister_casesensitive = false
    ; show warnings on duplicate constat registrations
    ;com.autoregister_verbose = true
    是在php.ini这里改吗 
      

  23.   

    @LS是在那个段落里改。我木有QQ。