[PHP] COM object create geeft fatal error

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • siepeltjuh
  • Registratie: Maart 2003
  • Niet online
Momenteel speel ik wat met COM objecten in PHP. Graag zou ik de mails uit Outlook in php beschikbaar hebben. Dan denk je huh, weer zo iemand. Dat is toch niet zo moeilijk, nou na een hele zondag geprutst te hebben geef ik het op, graag jullie gedachten over onderstaand probleem.
Opvragen van Outlook versie nummer:
PHP:
1
2
3
$outlook=new COM("outlook.application") or die("Cannot start outlook"); 
print "Loaded word version ($outlook->Version)\n"; 
$outlook->Quit();

Dit geeft een Fatal error: maximum execution time (60 secs) exceeded. Maar er gebeurt geen hol, ik vraag alleen de versie op, waarom ?!!?

Om te testen doe ik het eens met Word:
PHP:
1
2
3
4
5
6
7
$word = new COM("word.application") or die("Unable to instantiate Word");
echo "Loaded Word, version {$word->Version}\n";
$word->Visible = 1;
$word->Documents->Add();
$word->Quit();
$word->Release(); 
$word = null;

Geeft ook een fatal error:
Loaded Word, version 11.0
Fatal error: Uncaught exception 'com_exception' with message
'Source: Microsoft Word
Description: Er is onvoldoende geheugen. Sla het document nu op.' in D:\htdocs\test.php:11 Stack trace: #0 D:\htdocs\test.php(11): variant->Add() #1 {main} thrown in D:\htdocs\test.php on line 11

Ook dit is een lekkere foutmelding waarmee ik niet geholpen ben. Google en got leveren geen vergelijkbare klachten, het zal dan ook ergens in mijn configuratie fout zitten denk ik.

Ik gebruik
Windows Vista SP1
IIS7
PHP 5.2.6
Office 2003 SP3

*de COutLook class die overal te vinden is geeft ook een fatal error max execution time exceeded*

Can`t live without the mods


Acties:
  • 0 Henk 'm!

  • Brakkie
  • Registratie: Maart 2001
  • Niet online

Brakkie

blaat

- Zet de max execution time langer in php.ini
- Zet de memory limit hoger in php.ini

Zijn 2 dingen die bij me opkomen als ik de error melding lees.

Systeem | Strava


Acties:
  • 0 Henk 'm!

  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

Duurt het 60 seconden om outlook te openen :?

Ook: catch die exception:

PHP:
1
2
3
4
5
6
7
8
try
{
   //...code
}
catch(com_exception $ex)
{
    print($ex->getMessage());
}

Going for adventure, lots of sun and a convertible! | GMT-8


Acties:
  • 0 Henk 'm!

  • siepeltjuh
  • Registratie: Maart 2003
  • Niet online
Ik heb mijn geheugen limiet op 256MB staan, (was 128MB) in de Task manager zie ik dat hij word start en oploopt tot 52MB en daar blijft hangen.

Het outlook script start outlook en gebruikt 7MB en 100% cpu in task manager.

execution time is normaal 30, en nu eens op 600 gezet de error verandert dan wel:
Failed to create COM object `outlook.application': Serveruitvoering is mislukt


Het catch script levert niets anders op, wordt nu alleen netter weergegeven, en soms krijg ik nog een extra warning:
Warning: com::com() [com.com]: Type library constant emptyenum is already defined in D:\htdocs\test.php on line 5

[ Voor 32% gewijzigd door siepeltjuh op 22-06-2008 19:49 ]

Can`t live without the mods


Acties:
  • 0 Henk 'm!

  • Dricus
  • Registratie: Februari 2002
  • Laatst online: 13:26

Dricus

ils sont fous, ces tweakers

Heeft dit niet iets te maken met de gebruikerscontext waarin PHP draait? Als je IIS gebruikt (en dat is het geval lees ik net), dan zal PHP onder IUSR_computername draaien. IIS draait als niet-interactieve service. Er worden dus geen user-interfaces getoond. Misschien kunnen outlook en word daar ook niet goed tegen.

Je zou eens kunnen kijken wat er gebeurt als je je PHP script gewoon vanaf de command-line uitvoert m.b.v. php.exe.

[ Voor 14% gewijzigd door Dricus op 23-06-2008 08:02 . Reden: Duuh, lezen... ]

Stel niet uit tot morgen wat je vandaag nog tot morgen kunt uitstellen...


Acties:
  • 0 Henk 'm!

  • siepeltjuh
  • Registratie: Maart 2003
  • Niet online
Inderdaad daar had ik ook ergens een artikel over gelezen, maar op internet zijn zoveel toepassingen te vinden voor PHP met COM en praktisch nergens zie je dat vermeld staat iemand dit soort problemen heeft.

De rechten staan in ieder geval goed. Wel heb ik nog geprobeerd om UAC uit tezetten, dat had geen resultaat. Bij word zie je dat hij hem wel start, maar geen ruimte heeft (dat zou idd aan de IUSR kunnen liggen) maar outlook start hij helemaal niet.

Via de console ga ik proberen zodra ik thuis ben.

Can`t live without the mods


Acties:
  • 0 Henk 'm!

  • siepeltjuh
  • Registratie: Maart 2003
  • Niet online
Ah resultaat. Hij blijkt te hangen op een scherm waarin je een profiel kunt kiezen.
Afbeeldingslocatie: http://www.leosiepel.nl/outlook.jpg

Toch gek dat ik geen hits kan vinden op google die hier melding van maken.

Via de Outlook class http://www.programmersheaven.com/articles/bogomil/art.htm Als ik die via de commandline gebruik, werkt het perfect. In IE via IIS dus niet.

Het probleem is nu dus helder. Nu echter nog een oplossing. IIS onder ander account laten draaien lijkt me niet handig.

Hoe dan verder?

[ Voor 48% gewijzigd door siepeltjuh op 23-06-2008 16:35 ]

Can`t live without the mods


Acties:
  • 0 Henk 'm!

  • siepeltjuh
  • Registratie: Maart 2003
  • Niet online
Iemand enig idee hoe je dit probleem onderuit haalt?

IUSR mag blijkbaar niet outlook openen via een COM object, want het script werkt wel onder de normale useraccount via de console.

Stel dat ik het zou willen, hoe geef ik de IUSR user dan alsnog rechten?! (als test of dat wel werkt)

Can`t live without the mods

Pagina: 1