php 中缺少类 php_com_dotnet

Posted

技术标签:

【中文标题】php 中缺少类 php_com_dotnet【英文标题】:Class php_com_dotnet is missing in php 【发布时间】:2019-10-04 19:30:45 【问题描述】:

所以我在我的代码中使用了调用 php_com_dotnet:

$word = new COM("word.application");

// Hide MS Word application window
$word->Visible = 0;

//Create new document
$word->Documents->Add();

// Define page margins
$word->Selection->PageSetup->LeftMargin = '2';
$word->Selection->PageSetup->RightMargin = '2';

// Define font settings
$word->Selection->Font->Name = 'Arial';
$word->Selection->Font->Size = 10;

// Add text
$word->Selection->TypeText("TEXT!");

// Save document
$filename = tempnam(sys_get_temp_dir(), "word");
$word->Documents[1]->SaveAs($filename);

// Close and quit
$word->quit();
unset($word);

header("Content-type: application/vnd.ms-word");
header("Content-Disposition: attachment;Filename=document_name.doc");

// Send file to browser
readfile($filename);
unlink($filename);

我得到了他的错误:

致命错误:未捕获的错误:在 /var/www/clients/client1/web1/web/nordin/save.php:6 中找不到类 'COM' 堆栈跟踪:在 /var/www 中抛出 #0 main /clients/client1/web1/web/nordin/save.php 在第 6 行

所以我环顾四周,将其添加到我的 php.ini 文件中:

 [COM_DOT_NET]
 ;extension=php_com_dotnet.dll

 enable_dl = On
 ; extension_dir = "ext"

它仍然不起作用,我做错了什么?请帮忙!

编辑

我的文件在 sftp 服务器上,我收到如下错误:

 ini_set('display_errors', 1);
 ini_set('display_startup_errors', 1);
 error_reporting(E_ALL);

【问题讨论】:

你在哪里需要/包含声明类的文件? php.ini 中一行开头的; 表示这一行是注释,呵呵! @04FS 哦不知道。谢谢。 你的服务器运行的是什么操作系统? 听起来好像是在 Windows 上编写代码,但在 Linux 上运行代码。如果是这种情况,我认为您将无法使用 COM 对象。 【参考方案1】:

扩展名前的分号是注释,表示未启用扩展名。要启用它,您必须删除该分号:

;extension=php_com_dotnet.dll

变成

extension=php_com_dotnet.dll

进行此更改后,您可能需要重新启动 IIS。

【讨论】:

谢谢你刚刚改了,但是没用,会不会是服务器本身的问题。 OP 很困惑。 Class 'COM' not found in /var/www/clients/client1/web1/web/nordin/save.php 表示 Unix 环境,但 php_com_dotnet.dll 用于 Windows @Machavity 不,我在 Windows 上,我什至有文件 php_com_dotnet.dll

以上是关于php 中缺少类 php_com_dotnet的主要内容,如果未能解决你的问题,请参考以下文章

PHP登录类

XAMPP中缺少php错误日志

缺少 mysqli 扩展.请检查 PHP 配置?

PHP POST 请求中缺少授权标头

价格中缺少 2 位小数(PHP)

编译的 PHP 7 在 WordPress 中缺少 mysql 扩展