You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP调用依赖.NET 5.0的COM DLL遇System.Xml加载失败求助

解决PHP调用依赖.NET 5.0的COM DLL时的System.Xml依赖问题

可行解决方案:

1. 安装.NET Framework 4.x运行时

错误中缺失的System.Xml, Version=4.0.0.0属于.NET Framework(非跨平台的.NET 5+版本),COM互操作场景下必须依赖该框架的基础类库。确保服务器上安装了**.NET Framework 4.8或更高版本**,该版本会包含所需的System.Xml程序集。

2. 添加程序集绑定重定向配置

若已安装.NET Framework仍报错,可能存在版本绑定冲突。在PHP可执行文件(php.exe)的同级目录创建php.exe.config文件,添加重定向规则,让系统自动匹配可用的高版本System.Xml:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Xml" publicKeyToken="b77a5c561934e089" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

如果服务器上System.Xml的实际版本更高(比如.NET Framework 4.8对应的版本号),可将newVersion修改为对应版本号(可在C:\Windows\Microsoft.NET\Framework64\v4.0.30319\System.Xml.dll右键查看详细信息获取)。

3. 重新注册COM DLL

该闭源DLL是基于.NET 5.0构建的COM可见组件,需确保注册方式正确:

  • 以管理员权限运行对应.NET 5.0版本的regasm.exe(路径类似C:\Program Files\dotnet\shared\Microsoft.NETCore.App\5.0.x\regasm.exe)重新注册:
    regasm.exe /codebase YourClosedSource.dll
    
  • 注意位数匹配:32位PHP需用32位regasm注册DLL,64位PHP则用64位版本,否则会导致依赖加载失败。

4. 验证位数一致性

确保PHP的位数(32/64位)与COM DLL、.NET运行时的位数完全一致:

  • 64位PHP必须搭配64位.NET 5.0运行时和64位注册的COM DLL;
  • 32位PHP对应32位版本的所有组件,否则会出现隐性依赖加载异常。

5. 检查环境变量配置

确认系统PATH环境变量包含.NET 5.0运行时目录(如C:\Program Files\dotnet\)和.NET Framework相关目录(如C:\Windows\Microsoft.NET\Framework64\v4.0.30319\),保证系统能定位到所需依赖库。


内容的提问来源于stack exchange,提问作者maldaba

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 05:52:10