返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >php无法调用com组件怎么办
  • 713
分享到

php无法调用com组件怎么办

2024-04-02 19:04:59 713人浏览 薄情痞子
摘要

本教程操作环境:windows7系统、PHP8.1版、Dell G3电脑。php无法调用com组件怎么办?php引用COM组件踩坑记录最近工作事项中出现一项“零工”,要在已有的php工程中增加一项功能,而且工程以及所需要实现功能的源代码工程

教程操作环境:windows7系统、PHP8.1版、Dell G3电脑。

php无法调用com组件怎么办?php引用COM组件踩坑记录

最近工作事项中出现一项“零工”,要在已有的php工程中增加一项功能,而且工程以及所需要实现功能的源代码工程也都有,本是一件很容易的事情。虽然我鲜少用到php,不过这不是最重要的“限制因素”,让我头疼的是,功能库部分是用.net框架实现的,里面有很多对数据格式的调整,相对比较复杂,没有功能逻辑手册,很难在php中复写一份。所以要在php中直接引用.NET的动态库就成了完成“任务”的关键

网上很多前辈记录了这个问题,但照葫芦画瓢未能成功,本文就是在“肝零工”的过程中,遇到并填坑的记录

生成COM组件动态库

COM component(COM组件)是微软开发软件开发技术。其实质是一些小的二进制可执行程序,它们可以给应用程序,操作系统以及其他组件提供服务。而在php中如果想要引用第三方动态库,需要通过 new COM("Component.class") 的方法来实现,其中的 Component 必须是COM组件

1. 构建Windows类库项目

无论是哪个版本的Framework,应该都能够在Windows标签下找到类库项目

这样工程中默认会有 Properties\AssemblyInfo.cs 文件,里面记录了项目集所需的信息

2. 目标框架要匹配

创建项目的时候可以对Framework进行选择

如果是后期调整,可在工程属性 > 应用程序中的目标框架中进行修改

注意,需要于后期注册dll的时候的框架保持一致

3. 设置COM组件可见

在 Properties\AssemblyInfo.cs 文件中,将 ComVisible 进行如下修改

[assembly: ComVisible(true)]

4. 要设置签名并设置强名称密钥

工程属性 > 签名中,勾选 “为程序集签名” ,同时在下方 “选择强名称密钥文件” 中新建密钥文件

然后生成,在 bin\Debug 目录下找到对应的 dll 文件

5. 如果存在无法嵌入的动态库

假如工程Framework版本较低,或者,

引用的库缺少互操作所需特性,

总之,无法对引用库进行嵌入互操作

那么,依赖的dll,也需要执行后续的注册等操作

将DLL注册到服务器

涉及到系统级的操作,坑甚多…

1. 确认php版本

亲测5.3.22版本不可用,5.4.5版本可用,所以尽可能采用5.4以上版本

现在php最高是8.0版了,不知道是否还是一样的操作方法

2. 确认所需系统工具

需要 gacutil 和 regasm 两种工具,且都需要是 匹配Framework版本 的

也就是说生成的COM组件的dll用的是哪个版本的框架,此处也需要用对应版本的工具进行

通常情况下windows系统肯定会内置 regasm 工具

目录路径例如,

C:\Windows\Microsoft.NET\Framework64\v2.0.50727\RegAsm.exe

如果是应用于64位系统,则在Framework64 目录下,否则用 Framework 目录下,选择对应Framework框架的版本号,其中应该能找到 RegAsm.exe 文件

gacutil 工具在微软提供的 windows sdk 中有,如果没安装过,可点击到官网下载

默认安装后,Frameworkd4.0以下版本的工具路径,

C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\gacutil.exe

如果需要4.0的版本,路径是,

c:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\NETFX 4.0 Tools\gacutil.exe

3. 配置php.ini

开启 com.allow_dcom = true

确保你的 extension_dir 目录中有 php_com_dotnet.dll 文件

开启或新增 extension=php_com_dotnet.dll

4. 缓存和注册DLL

以64位系统,4.0版本的my.dll为例

将第一趴中生成的dll,复制到 c:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\NETFX 4.0 Tools\ 目录中

到目录 c:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\NETFX 4.0 Tools\ 下执行 gacutil /i my.dll

到目录 C:\Windows\Microsoft.NET\Framework64\v4.0.30319\ 下执行 regasm my.dll

5. 注销DLL

以64位系统,4.0版本的my.dll为例

到目录 C:\Windows\Microsoft.NET\Framework64\v4.0.30319\ 下执行 regasm my.dll /unreGISter

到目录 c:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\NETFX 4.0 Tools\ 下执行 gacutil /u my

php调用COM组件

以上内容都配置无误以后,就可以在php文件中进行调用,方法如下,

$comClass = new COM('namespace.className');
$comClass -> methodName();

提示没有COM方法,则需要考虑是否已经开启了php的com功能,或者php_com_dotnet.dll是否加载成功

提示没有调用的dll的方法,或者dll未注册,则需要考虑是否dll文件已经注册成功

以上就是php无法调用com组件怎么办的详细内容,更多请关注编程网其它相关文章!

--结束END--

本文标题: php无法调用com组件怎么办

本文链接: https://lsjlt.com/news/116990.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • php无法调用com组件怎么办
    本教程操作环境:windows7系统、PHP8.1版、Dell G3电脑。php无法调用com组件怎么办?php引用COM组件踩坑记录最近工作事项中出现一项“零工”,要在已有的php工程中增加一项功能,而且工程以及所需要实现功能的源代码工程...
    99+
    2024-04-02
  • php无法调用com组件如何解决
    本文小编为大家详细介绍“php无法调用com组件如何解决”,内容详细,步骤清晰,细节处理妥当,希望这篇“php无法调用com组件如何解决”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。php无法调用com组件的解决...
    99+
    2023-07-04
  • C#中怎么调用Excel的COM组件
    这篇文章给大家介绍C#中怎么调用Excel的COM组件,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。C#调用Excel的COM组件一个.NET组件事实上是一个.NET下的DLL,它包含的不仅是运行程序本身,更重要的是包...
    99+
    2023-06-17
  • C#中COM组件的ASP调用方法是什么
    这篇文章主要介绍“C#中COM组件的ASP调用方法是什么”,在日常操作中,相信很多人在C#中COM组件的ASP调用方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C#中COM组件的ASP调用方法是什么...
    99+
    2023-06-17
  • C++和C#相互调用COM组件的方法
    本篇内容介绍了“C++和C#相互调用COM组件的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!前一阵在工作中做项目的时候,遇到了COM组...
    99+
    2023-06-18
  • C#中Excel COM组件怎么用
    这篇文章主要介绍C#中Excel COM组件怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1 Excel对象微软的Excel对象模型包括了128个不同的对象,从矩形,文本框等简单的对象到透视表,图表等复杂的对象...
    99+
    2023-06-17
  • 怎么解决php com组件报错问题
    小编给大家分享一下怎么解决php com组件报错问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!php com组件报错的解决办法:1、在php.ini中修改配置...
    99+
    2023-06-08
  • python怎么生成com组件
    要在Python中生成COM组件,可以使用pywin32库。下面是一个简单的示例,演示了如何创建一个COM组件:```pythoni...
    99+
    2023-09-27
    python
  • wamp无法解析php文件怎么办
    本教程操作环境:windows7系统、PHP8.1版、Dell G3电脑。wamp无法解析php文件怎么办?具体问题描述:我的wamp已经装好了,其他一切都可以使用包括mysql等等,但是就是编写的php文件解析不了!!!!直接通过浏览器显...
    99+
    2024-04-02
  • php无法使用postgresql怎么办
    本教程操作环境:windows7系统、PHP8.1版、Dell G3电脑。php无法使用postgresql怎么办?PHP连接不上PostgreSQL的问题最近遇到一个客户,使用的是PostgreSQL数据库,之前也没有接触用到过这个数据库...
    99+
    2024-04-02
  • vue使用$emit时父组件无法监听到子组件事件怎么办
    这篇文章主要介绍vue使用$emit时父组件无法监听到子组件事件怎么办,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!vue使用$emit时,父组件无法监听到子组件的事件的原因是$em...
    99+
    2024-04-02
  • vue怎么调用组件方法
    这篇文章主要介绍了vue怎么调用组件方法的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇vue怎么调用组件方法文章都会有所收获,下面我们一起来看看吧。在Vue中,组件的方法可以在组件中定义。我们可以使用Vue.e...
    99+
    2023-07-05
  • 当MSSQL无法调用Xp_CmdShell时该怎么办
    这期内容当中小编将会给大家带来有关当MSSQL无法调用Xp_CmdShell时该怎么办,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。当用MSSQL调用Xp_CmdShel...
    99+
    2024-04-02
  • PHP项目中遇到无法调用commit的问题怎么办
    当在PHP项目中遇到无法调用commit的问题,可能是由于代码中的错误、权限不足或者版本控制工具配置问题等引起的。在遇到这类问题时,可以通过以下方法来逐步排查和解决: 一、检查代码错误...
    99+
    2024-03-04
    php 问题 commit
  • 在Visual中C#是怎么使用COM组件的
    这篇文章主要讲解了“在Visual中C#是怎么使用COM组件的”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“在Visual中C#是怎么使用COM组件的”吧!Visual C#是微软推出的新一...
    99+
    2023-06-17
  • Vue.js父组件$on无法监听子组件$emit触发事件怎么办
    这篇文章主要为大家展示了“Vue.js父组件$on无法监听子组件$emit触发事件怎么办”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Vue.js父组件$on无...
    99+
    2024-04-02
  • React父组件怎么调用子组件的方法
    本教程操作环境:Windows7系统、react18版、Dell G3电脑。在React中,我们经常在子组件中调用父组件的方法,一般用props回调即可。但是有时候也需要在父组件中调用子组件的方法,通过这种方法实现高内聚。有多种方法,请按需...
    99+
    2023-05-14
    React.js 前端
  • win10无法调节分辨率怎么办
    这篇文章给大家分享的是有关win10无法调节分辨率怎么办的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、点击桌面左下角的开始菜单,选择“设置”选项。二、在弹出的设置界面,拉动滚动条,找到并点击“更新和安全”。三...
    99+
    2023-06-28
  • php imagepng无法显示怎么办
    本文操作环境:Windows7系统、PHP7.1版、DELL G3电脑php imagepng无法显示怎么办PHP 使用GD 库绘制图像,无法显示的问题根据官方GD 库绘制图像文档样式原基本样式:$width = 120; $height ...
    99+
    2021-02-16
    php imagepng
  • php echo无法输出怎么办
    本文操作环境:Windows7系统、PHP7.1、Dell G3电脑。php echo无法输出怎么办问题描述:如图PHP echo输不出来?解决办法:首先一定要安装配置好PHP运行环境,比如wampserver然后打开wamp,将这个文件拷...
    99+
    2019-07-12
    php echo
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作