Неустранимая ошибка: класс COM не найден в E: \ Server \ wwwroot \ PHPWebAdmin \ initialize.php в строке 13
Я пытаюсь настроить hMailServer в «Windows Server 2008 Enterprise Edition Service Pack 1». Я успешно установил hMailServer, Apache, PHP и интерфейс веб-почты «AfterLogic webMail». И все работает хорошо. Но У меня возникла проблема, когда я пытался установить » PHPWebAdmin «。 Сообщение об ошибке выглядит следующим образом:
Fatal error: Class 'COM' not found in E:\Server\wwwroot\PHPWebAdmin\initialize.php on line 13
Эта информация появляется при посещении «http://192.168.2.66:8088/PHPWebadmin/».
Я настроил параметры файла конфигурации PHP php.ini следующим образом:
[PHP] register_globals = Off display_errors = Off doc_root = "E:/Server/wwwroot" extension_dir = "E:/Server/php5_4_5/ext" [Session] session.save_path = "E:/Server/php5_4_5/tmp" [COM] com.allow_dcom = true
Я также закончил эти вещи, как предлагает руководство hMailServer:
DCOM permissions Overview By default, IIS6 is not allowed to connect to hMailServer because of the Distributed COM permissions that Windows uses. Also, Apache run as a user account with restricted permissions is not allowed to connect by default. Steps Follow these steps to give IIS or Apache the required permissions to connect to hMailServer using DCOM. 1.Start DCOM config by selecting Start, Run, enter dcomcnfg.exe and press OK. 2.In the Component Services program, expand the Component Services folder 3.Expand down to Computers | My Computer | DCOM Config 4.Right-click on hMailServer and select properties 5.Select the Security tab 6.Under "Launch and Activation Permissions", select Customize and click on Edit 7.Under "Group or user names", click Add 8.For IIS6: add the built-in anonymous IIS user account 9.For Apache: add the Apache user account 10.Set the Local Launch and Local Activation permissions for this user to Allow
Собственно, я даже пытался дать разрешение EveryOne в конфигурации DCOM.
Установка PHPWebAdmin дает пользователям возможность изменить свой пароль электронной почты.
Среда здесь: Windows Server 2008, Apache2.2, PHP5.4.5.
Почему возникла эта проблема? И как с этим справиться?
Фатальная ошибка: Класс ‘COM’, не найденный в C:\inetpub\wwwroot\test.php на строке 22
FTP, возможно, не является необходимостью. Вы рассмотрели использование дельфина (или какой-либо другой файловый менеджер на человечности) и экспорт, это — канавка дисплея туннель ssh? Это сэкономит Вас администрирование FTP, порты, удостоверения пользователя, и т.д.
Вам нужен локальный X-сервер для этого, обеспеченного по умолчанию на Linux, но на окнах необходимо установить xming, который свободен.
ssh -Y remotemachine -l root (or any other sudoer) my_prefered_filemanager
«дельфин» похож на файловый менеджер для Linux, это — gui для движущихся файлов.
«туннель ssh» означает, что программа, которую Вы запускаете на сервере, будет отображена на Вашей машине: т.е. это откроет графический интерфейс на Вашем экране, не на экране сервера.
«локальный X-сервер» является сервером, которые получают информацию от программы, которую Вы запустили. Xming является примером X-сервера для окон. Вы устанавливаете его на своем клиенте окон, и это ожидает соединения, поступающего с Вашего сервера.
1) загрузите и установите Xming для окон. Также загрузите и установите шрифты для Xming. Оба свободны, Google для него. Не забывайте выполнять его впоследствии, это появится со значками около часов окон. Никакое окно еще не будет видимо на этом шаге.
2) откройте шпаклевку, но прежде, чем запустить Ваше соединение, включите X передач, это находится в ssh опциях шпаклевки, в левом дереве, около нижней части. Сохраните конфигурацию и запуститесь, соединение как Вы обычно делало. Эта установка полностью прозрачна, если Вы не будете использовать графический интерфейс на сессии шпаклевки, то это не будет иметь никакого значения, если туннель будет включен или нет.
3) попробуйте свой туннель: от Вашей оболочки запускают любую программу, которые имеют графический интерфейс, это должно раскрыться на Вашем рабочем столе окон. например, запустите nedit gedit. Если это раскрывается затем, Вы готовы. Теперь необходимо запустить эту программу как корень. попробуйте к «sudo nedit» (затем обзор в файл, который Вы хотите отредактировать из nedit меню файла). Если это не работает, Вы можете иметь к «sudo-s» сначала, то запустить «nedit». nedit и gedit являются типичными, очень легкими, редакторами. Возможно, Вам установили другой в человечности, которую Вы предпочитаете, можно использовать любую программу, которую Вы хотите, это не важно.
Xampp PHP Создание фатальной ошибки COM-объекта без какой-либо информации
У меня возникла проблема с моим приложением php. Я создаю приложение-службу, которое должно быть связано с нашим ERP (selectline). Но я не могу создать COM-объект. Этот код:
У меня две среды: Сервер 2008 R2 + Xampp v3.1.0 | PHP 5.4.7 Сервер 2012 R2 + Xampp v3.1.0 | PHP 5.4.7 Мне пришлось добавить php_com_dotnet.dll в php.ini, потому что раньше у меня был класс COM. В связи с тем, что я полностью знаком с COM, я понятия не имею, где искать отказ. Пусть вы, ребята, можете мне помочь. Заранее спасибо Я немного изменил свой код:
try < $obj = new COM("word.application") or die("Unable to instantiate Word"); >catch (Exception $e) < echo $e->getMessage() . "\n"; >
Я не понимаю, что не так. Согласно этой статье http://www.php.net/manual/en/class.com.php нет необходимости в дополнительных параметрах, не так ли?
Word не предназначен для работы в серверной среде. Даже если вы решите эту проблему, вы столкнетесь со многими другими проблемами.
@espino316 espino316 Ms Word установлен на моем сервере && extension = php_com_dotnet.dll включен в php.ini. Оказывается, проблема была в том, что Служба компонентов (COM) была 32-битной, тогда как php по умолчанию на этих серверах был 64-битной. Ссылка для ответа на проблему состоит в том, чтобы зарегистрировать эту 32-битную службу COM как 64. Я нашел решение для сервера 2008 года. Я пробовал такое же решение для сервера 2012 года, но оно не будет работать.
PHP и COM
PHP может быть использован для доступа к объектам COM и DCOM на платформах Win32.
- Я собрал DLL для кое-каких вычислений. Можно ли запустить эту DLL из PHP?
- Что значит ‘Unsupported variant type: xxxx (0xxxxx)’?
- Возможно ли манипулирование визуальными объектами в PHP?
- Могу ли я сохранять объект COM в сессии?
- Как я могу поймать ошибки COM?
- Можно ли генерировать DLL-файлы из PHP-скриптов так, как это можно делать в Perl?
- Что значит ‘Unable to obtain IDispatch interface for CLSID ‘?
- Как можно запускать COM-объекты с удалённого сервера?
- Я получаю ‘DCOM is disabled in C:\path. \scriptname.php on line 6’, что делать?
- Возможно ли с помощью PHP загрузить/манипулировать объектом ActiveX на странице?
- Возможно ли получить выполняющийся экземпляр компонента?
- Есть ли способ обработать событие, посланное объектом COM?
- У меня возникают проблемы при попытке вызвать метод объекта COM, который предоставляет более чем один интерфейс. Что я могу сделать?
- Значит PHP работает с COM, как насчёт COM+?
- Если PHP может манипулировать COM-объектами, можно ли представить себе использование MTS для управления ресурсами компонентов в соединении с PHP?
Если это простая DLL, то пока ещё нет возможности вызвать её из PHP. Если DLL содержит COM-сервер, то вы можете получить доступ к ней, если она реализует интерфейс IDispatch.
Что значит ‘Unsupported variant type: xxxx (0xxxxx)’?
Существуют дюжины типов VARIANT и их комбинаций. Большинство из них уже поддерживаются, но несколько всё ещё не реализованы. Массивы поддерживаются не полностью. Только одномерные индексированные массивы могут передаваться между PHP и COM. Если вы обнаружите неподдерживаемые типы, пожалуйста, сообщите о них как об ошибке (если это ещё не сделано) и предоставьте всю доступную информацию.
Возможно ли манипулирование визуальными объектами в PHP?
В общем да, но так как PHP в основном используется как скриптовый язык для веба и выполняется в контексте веб-сервера, то визуальные объекты никогда не появятся на рабочем столе сервера. Если вы используете PHP как скрипт для приложений, например в связке с PHP-GTK, тогда нет ограничений на доступ и манипулирование визуальными объектами через COM.
Могу ли я сохранять объект COM в сессии?
Нет, не можете. Так как экземпляры COM рассматриваются как ресурсы, то они доступны только в контексте одного скрипта.
Как я могу поймать ошибки COM?
Модуль COM выбрасывает исключение com_exception , которое вы можете перехватить и затем проверить у него поле code , чтобы понять, что делать дальше.
Можно ли генерировать DLL-файлы из PHP-скриптов так, как это можно делать в Perl?
Нет, к сожалению такое средство недоступно для PHP.
Что значит ‘Unable to obtain IDispatch interface for CLSID ‘?
- неправильный CLSID
- отсутствует запрошенная DLL
- запрошенный компонент не реализует интерфейс IDispatch
Как можно запускать COM-объекты с удалённого сервера?
Точно так же как вы запускаете локальные объекты. Вам только надо передать IP удалённой машины как второй параметр конструктора COM.
Убедитесь, что в вашем php.ini вы установили com.allow_dcom = true
Я получаю ‘DCOM is disabled in C:\path. \scriptname.php on line 6’, что делать?
Отредактируйте ваш php.ini и установите com.allow_dcom = true .
Возможно ли с помощью PHP загрузить/манипулировать объектом ActiveX на странице?
PHP здесь не причём. Объекты ActiveX загружаются на стороне клиента, если они были запрошены из HTML документа. Связи с PHP-скриптом здесь нет и, следовательно, прямое взаимодействие с серверной стороной невозможно.
Возможно ли получить выполняющийся экземпляр компонента?
Это возможно с помощью моникеров (monikers). Если вы хотите получить несколько ссылок на один и тот же экземпляр Word, вы можете создать этот экземпляр как показано:
Это создаст новый экземпляр, если нет доступного выполняющегося экземпляра или будет возвращена ссылка на выполняющийся экземпляр, если такой доступен.
Есть ли способ обработать событие, посланное объектом COM?
Используя com_event_sink() вы можете определить приёмник события и привязать его. Вы можете заставить PHP сгенерировать скелет класса приёмника событий, используя com_print_typeinfo() .
У меня возникают проблемы при попытке вызвать метод объекта COM, который предоставляет более чем один интерфейс. Что я могу сделать?
Ответ так же прост, как и неудовлетворителен. Не знаю точно, но думаю, что вы не можете ничего сделать. Если у кого-то есть точная информация по этому вопросу, пожалуйста, дайте » мне знать 🙂
Значит PHP работает с COM, как насчёт COM+?
COM+ расширяет COM, предоставляя систему для управления компонентами через MTS и MSMQ, но здесь нет ничего особенного, что PHP должен поддерживать для использования таких компонент.
Если PHP может манипулировать COM-объектами, можно ли представить себе использование MTS для управления ресурсами компонентов в соединении с PHP?
Сам PHP ещё не обрабатывает транзакции. Таким образом, если возникает ошибка, откат не инициируется. Если вы используете компоненты, поддерживающие транзакции, вам будет необходимо реализовать управление транзакциями самим.