PHP можна використати для доступу до об'єктів COM і DCOM на платформах Win32.
Якщо це звичайна DLL, то її поки що не запустити з PHP. Якщо DLL містить COM сервер, ви можете мати доступ до нього, якщо він реалізував інтерфейс IDispatch.
Є десятки типів VARIANT та їхніх комбінацій. Більшість з них вже підтримуються, але кілька ще на стадії впровадження. Масиви підтримуються не повністю. Тільки одновимірні індексовані масиви можуть передаватися між PHP та COM. Якщо ви знайшли інші типи, що не підтримуються, повідомте, будь ласка, про них, як про ваду (якщо вже не повідомлено) та надайте якнайбільше інформації.
Загалом так, але оскільки PHP є мовою веб-сценаріїв, її код запускається в контексті вебсервера, тому візуальні об'єкти ніколи не з'являться на робочому столі серверів. Якщо ви, наприклад, використовуєте PHP для написання програм спільно з PHP-GTK, то нема обмежень доступу або керування візуальними об'єктами через COM.
Ні, не можете. Екземпляри COM розглядаються як ресурси, тому вони доступні лише в контексті одного сеансу.
Розширення COM викидає виключення com_exception
, які
ви можете ловити, щоб визначити і оглянути проблемну частину
коду
.
Ні, на жаль на PHP такий інструмент недоступний.
Ця помилка може бути з декількох причин:
Так само, як і локальні об'єкти. Вам лише треба передати другим параметром конструктору COM IP віддаленої машини.
Переконайтеся, що ви визначили
com.allow_dcom=
true
у вашому php.ini.
Відредагуйте ваш php.ini, задавши
com.allow_dcom=
true
.
Це не має нічого спільного з PHP. Об'єкти ActiveX завантажуються у клієнтський код за запитом документа HTML. Це не стосується скрипту PHP, тому пряма взаємодія на стороні сервера неможлива.
Це можливо завдяки псевдонімам. Якщо треба отримати численні посилання на той самий екземпляр слова, ви можете створити цей екземпляр, як показано:
<?php
$word = new COM("C:\docs\word.doc");
?>
Це створить новий екземпляр, якщо запущеного немає, або поверне дескриптор запущеного екземпляра, якщо він доступний.
Ви можете створити обробник подій і прив'язати його, використавши com_event_sink(). Щоб PHP генерував скелет для класу приймача подій, є функція com_print_typeinfo().
Відповідь настільки проста, наскільки і незадовільна. Невідомо, чому так, але не можна нічого з цим вдіяти.
COM+ розширює COM платформою для керування компонентами через MTS і MSMQ, але в цьому немає нічого особливого, аби PHP мав підтримку цього продукту.
PHP сам ще не обробляє транзакції. Таким чином, якщо виникає помилка, відкочування не починається. Якщо ви використовуєте компоненти, які підтримують транзакції, вам треба власноруч реалізувати управління транзакціями.