Met het web-based bedrijfsinformatiesysteem (BIS) van ons bedrijf kunnen automatisch offerte's (word-documenten) gegenereerd worden. Na het kiezen van een template wordt MS Word geopend en worden verschillende waarden uit de database (MS SQL server 2003) zoals bijvoorbeeld de naam en het adres van de relatie ingevuld in het document. Dit is gerealiseerd door het gebruik van een COM object welke op de volgende (standaard) manier in PHP wordt aangemaakt:
$word = new COM("word.application") or die("Unable to instantiate Word");
Dit is allemaal getest en lokaal werkt het ook naar behoren. Nu zit ik met het volgende:
Binnen ons bedrijf maken we gebruik van een terminal server, waarop de standaard office-applicaties geinstalleerd zijn. Verder hebben we een aparte internet- en mailserver. De medewerkers (+/- 30 werkstations) starten hun PC op en openen een terminal server sessie. Hierna kunnen ze werken in de office applicaties. Het opvragen van mail en internetpagina's (en dus ook het BIS!) gaat via de internet- en mailserver.
Het probleem is dat er géén office geïnstalleerd staat op de internetserver, waardoor het aanmaken van het COM object niet lukt. Ik weet dat het mogelijk is om met DCOM MS Word op een andere PC dan de server op te starten door het ipadres van de client mee te geven bij het aanmaken van het COM object, maar het lijkt erop alsof de aanwezigheid van Word op de server tóch verplicht is. Ik krijg foutmeldingen met de strekking:
Warning: (null)(): Invalid ProgID, GUID string, or Moniker: Invalid syntax in c:\inetpub\wwwroot\testremoteword.php
Het word object is dus niet geregistreerd op de server en heeft dus geen progId. Het heeft niets te maken met rechten, allemaal uitvoerig getest en ook niets met de instellingen van PHP.ini op de server (com.allow-dcom = true).
Kort samengevat: Is het mogelijk MS Word te starten op de terminal server wanneer het wordt aangeroepen door een php-pagina op de internet server, zonder Word op de internet-server te installeren? Ik heb al verschillende (oude) topics m.b.t. PHP en DCOM doorgespit, maar geen van deze bood een oplossing voor deze specifieke situatie....
$word = new COM("word.application") or die("Unable to instantiate Word");
Dit is allemaal getest en lokaal werkt het ook naar behoren. Nu zit ik met het volgende:
Binnen ons bedrijf maken we gebruik van een terminal server, waarop de standaard office-applicaties geinstalleerd zijn. Verder hebben we een aparte internet- en mailserver. De medewerkers (+/- 30 werkstations) starten hun PC op en openen een terminal server sessie. Hierna kunnen ze werken in de office applicaties. Het opvragen van mail en internetpagina's (en dus ook het BIS!) gaat via de internet- en mailserver.
Het probleem is dat er géén office geïnstalleerd staat op de internetserver, waardoor het aanmaken van het COM object niet lukt. Ik weet dat het mogelijk is om met DCOM MS Word op een andere PC dan de server op te starten door het ipadres van de client mee te geven bij het aanmaken van het COM object, maar het lijkt erop alsof de aanwezigheid van Word op de server tóch verplicht is. Ik krijg foutmeldingen met de strekking:
Warning: (null)(): Invalid ProgID, GUID string, or Moniker: Invalid syntax in c:\inetpub\wwwroot\testremoteword.php
Het word object is dus niet geregistreerd op de server en heeft dus geen progId. Het heeft niets te maken met rechten, allemaal uitvoerig getest en ook niets met de instellingen van PHP.ini op de server (com.allow-dcom = true).
Kort samengevat: Is het mogelijk MS Word te starten op de terminal server wanneer het wordt aangeroepen door een php-pagina op de internet server, zonder Word op de internet-server te installeren? Ik heb al verschillende (oude) topics m.b.t. PHP en DCOM doorgespit, maar geen van deze bood een oplossing voor deze specifieke situatie....