本文目录一览:
- 1、我用php调用ocx控件,采用new COM()方法,但是报错了,错误如下,望大神解答
- 2、如何用PHP调用自己编写的COM组件
- 3、thinkphp 中如何使用 new com('XXX')
- 4、php中有个com组件,它里面都有哪些属性和方法可以调用呢?
我用php调用ocx控件,采用new COM()方法,但是报错了,错误如下,望大神解答
我没用过ocx 只从你报错页的信息上帮你分析一下
第一行只是一个警告,可以忽略,
第二行才是出错的地方, unexpected ' 未保护的单引号在那个ocx文件的第2581行
检查一下这个地方
如何用PHP调用自己编写的COM组件
首先写ActiveX Dll:
新建一个VB6工程,ActiveX Dll将工程命名为P_test,类名为c_test ,类的文件内容如下:
Option Explicit
Private MyscriptingContext As scriptingContext
Private MyApplication As Application
Private MyRequest As Request Private MyResponse As Response
Private MyServer As Server
Private MySession As Session Public
Sub OnStartPage(PassedscriptingContext As scriptingContext)
Set MyscriptingContext = PassedscriptingContext
Set MyApplication = MyscriptingContext.Application
Set MyRequest = MyscriptingContext.Request
Set MyResponse = MyscriptingContext.Response
Set MyServer = MyscriptingContext.Server
Set MySession = MyscriptingContext.Session
End Sub
Public Sub OnEndPage()
Set MyscriptingContext = Nothing
Set MyApplication = Nothing
Set MyRequest = Nothing
Set MyResponse = Nothing
Set MyServer = Nothing
Set MySession = Nothing
End Sub
Public Function Test_Number(num) As Variant
If num 0 Then Get_Number_Attrib = 1
If num = 0 Then Get_Number_Attrib = 0
End Function
编译生成p_test.dll文件
注册
提示符下运行:regsvr32 p_test.dll
编写php文件,test.php4代码如下:
?php
$b=new COM("p_test.c_test");
$a=$b-Test_Number(-454);
echo $a;
?
可能碰到的问题是,编译工程时通不过,要将Microsoft Active Server Pages Object Library引用进来,具体实现"Project-References"找到改库,并勾上 。
thinkphp 中如何使用 new com('XXX')
这个需要开启COM扩展, 好吧,刚看到最后一句,不好意思。。。。。。。。。
php中有个com组件,它里面都有哪些属性和方法可以调用呢?
先到PHP.INI中打开COM选项,com.allow_dcom = true
PHP 5.4.5后,com/dotnet 模块已经成了单独的扩展,所以需要在PHP.ini中配置extension=php_com_dotnet.dll,如果PHP VERSION5.4.5 则不需要。否则的话,可能就是报错 Fatal error: Class 'COM' not found 了
配置方法为:只需在扩展列表里添加extension=php_com_dotnet.dll即可
另外需要了解的是,COM组件虽然也是DLL扩展,但它不是PHP扩展,所以把Senc.dll拷贝到php/ext 目录,然后在PHP.INI里加载是错误的,PHP也不认识它
配置完毕后可以测试下,语句为
$word = new COM("word.application") or die("Unable to instanciate Word");
print "Loaded Word, version {$word-Version}\n";
上面语句本机必须安装了office才可以
openoffice的为:
$obj = new COM("com.sun.star.ServiceManager") or die("Unable to instanciate Word");