【发布时间】:2013-08-16 22:11:05
【问题描述】:
将 PHP 升级到 v. 5.5.1 后出现此错误:
Fatal error: Class 'COM' not found in
C:\inetpub\wwwroot\ndsystems\database_engine\mssql_engine.php on line 184
mssql_engine.php 文件中的第 184 行:
$this->COMConnection = new COM('ADODB.Connection'); //line 184
try {
$this->COMConnection->Open($connectionString);
$this->RetrieveServerVersion();
} catch (com_exception $e) {
$this->lastError = $e->getMessage();
$result = false;
}
return $result;
环境是 Windows 2008 R2 SP1, IIS 7
我尝试过的事情:
-
在 php.ini 末尾添加:
[PHP_COM_DOTNET] extension=php_com_dotnet.dll 在 php.ini 的 [PHP] 部分添加了
extension=php_com_dotnet.dll重新启动 IIS 并重新启动服务器本身。
将 PHP 降级到 5.3.27
似乎没有任何效果。如何解决此错误?
【问题讨论】:
-
将 放入测试 php 脚本中,在浏览器中打开。查看“com_dotnet”部分是否存在以及“COM 支持”是否“启用”。
-
出于好奇,既然可以使用 PHP 的
mssqlSQL Server 客户端库,为什么还要使用 ADO? -
@Dai - 我对 php 不太了解,所以我使用了 sqlmaestro 的 php 生成器用于 MSSQL 数据库。
-
@jszobody - 我看到的对 com_dotnet 的唯一引用是在配置命令部分:cscript /nologo configure.js "--enable-snapshot-build" "--enable-debug-pack" "- -disable-zts" "--disable-isapi" "--disable-nsapi" "--without-mssql" "--without-pdo-mssql" "--without-pi3web" "--with-pdo-oci =C:\php-sdk\oracle\instantclient10\sdk,shared" "--with-oci8=C:\php-sdk\oracle\instantclient10\sdk,shared" "--with-oci8-11g=C:\ php-sdk\oracle\instantclient11\sdk,shared""--with-enchant=shared""--enable-object-out-dir=../obj/""--enable-com-dotnet=shared"" --with-mcrypt=static" "--disable-static-analyze