Ответ 1
Вы пытались предоставить права администратора службы Apache в services.msc? Однако для этого вам потребуется пароль для учетной записи, которую вы используете для ее запуска. Надеюсь, что это поможет.
У меня возникла проблема с моим приложением php. Я создаю приложение-службу, которое должно быть связано с нашим ERP (selectline).
Но я не могу создать COM-объект. Этот код:
<?PHP
error_reporting(E_ALL);
session_start();
date_default_timezone_set('Europe/Zurich');
echo time();
$obj = new COM("fd6c8b29-e936-4a61-8da6-b0c12ad3ba00") or die("Unable to instantiate Word");
echo "Loaded Word, version {$word->Version}\n";
?>
Возвращает меня:
Неустранимая ошибка: в C:\xampp\htdocs\com.php в строке 21
У меня две среды:
Сервер 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";
}
Теперь я получаю:
Не удалось создать COM-объект `word.application ': недопустимый синтаксис
Я не понимаю, что не так. Согласно этой статье http://www.php.net/manual/en/class.com.php нет необходимости в дополнительных параметрах, не так ли?
Вы пытались предоставить права администратора службы Apache в services.msc? Однако для этого вам потребуется пароль для учетной записи, которую вы используете для ее запуска. Надеюсь, что это поможет.
Обязательно установите правильное разрешение COM для "Этот пользователь".
Надеюсь, я сэкономлю много и много часов головных болей для некоторых из вас:)
Настройка PHP
расширение = php_com_dotnet.dll
Использование
<?php
try {
$word = new COM("word.application");
} catch (Exception $ex) {
echo $ex->getMessage();
exit;
}
$word->Screenupdating = true;
$word->WindowState = 2;
$word->Visible = 0;
$word->CheckLanguage = false;
$word->Options->Overtype = false;
$word->Options->SaveInterval = 0;
$word->Assistant->Visible = false;
$word->DisplayAlerts = false;
// Do fancy stuff...
// Close word
$word->Quit();
$word = null;