[PHP]Geen com functions van buiten

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Yoram
  • Registratie: Augustus 2004
  • Laatst online: 05-08 14:22
Hallo iedereen,

Ik ben zojuist wat aan het uitproberen met com functions in PHP. Ik wil een programma laten draaien die ik vanuit php oproep.
Eerst de desbetreffende voorbeeld code: (test.php)
PHP:
1
2
3
4
<?php
$wscript = new COM('WScript.Shell');
$wscript->Run("cmd /K net send * 'hoi'", 0, false);
?>


Als ik test.php via php.exe open op mijn server werkt het prima, ik krijg een net send melding met 'hoi'.
Alleen wil ik dat ook vanaf buiten kunnen, als ik van mijn eigen pc test.php oproep in mijn browser gebeurd er helemaal niks.

Er is heel weinig te vinden op google/GoT over com funtions in php. In de comments van php.net staat ook niets wat mij kan helpen.

Ik denk zelf dat er ergens nog een restrictie aanstaat die beperkt dat ik com functions van buitenaf kan gebruiken.

Mijn Apache 2.2.9 server met PHP 5.2.6 draait op een Windows 2003 machine.

Hoe kan ik op mijn server een 'net send' melding krijgen als ik test.php vanaf buiten oproep in een browser?

Alvast bedankt ;)

Hallo!


Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Definieer 'helemaal niks'. Waar staat error_reporting op? Staat display errors aan? En last but not least: waarom zou je dit ooit willen doen? :+

{signature}


Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 18-09 14:42
Als jij test.php runned vanaf de console, draait deze onder jouw user.
Als jij hem via je browser aanroept draait hij echter onder de user waaronder je webserver draait. Mogelijk dat die onvoldoende rechten heeft?

Overigens kun je voor bovenstaande ook gewoon exec() gebruiken en heb je geen COM nodig.

Acties:
  • 0 Henk 'm!

  • Webgnome
  • Registratie: Maart 2001
  • Laatst online: 18-09 15:48
De eerste vraag die ik mezelf stel is . Waarom zou je dit via php willen? Wat is je uiteindelijke doel? Verder zul je de output van je prog dat via run wordt aangeroepen moeten printen ergens. Dat kan volgens mij gewoon zo :

PHP:
1
2
3
4
<?php
$wscript = new COM('WScript.Shell');
echo $wscript->Run("cmd /K net send * 'hoi'", 0, false); 
?>


en inderdaad.. wat er al gezegd wordt over rechten.

[ Voor 7% gewijzigd door Webgnome op 22-08-2009 12:34 ]

Strava | AP | IP | AW


Acties:
  • 0 Henk 'm!

  • Yoram
  • Registratie: Augustus 2004
  • Laatst online: 05-08 14:22
Voutloos schreef op zaterdag 22 augustus 2009 @ 12:31:
Definieer 'helemaal niks'. Waar staat error_reporting op? Staat display errors aan? En last but not least: waarom zou je dit ooit willen doen? :+
- error_reporting staat aan op all
- Helemaal niks = witte pagina in browser op eigen pc, geen meldingen of dergelijk op server..
- Ik wil dit doen om het een en ander uit te testen, als ik dit werkend heb ben ik weer een stapje verder ;).

En ik kwam hier net ook wat tegen met rechten, dat was ik nog niet tegen gekomen. Ik ga dat eens verder uitzoeken.

Hallo!


Acties:
  • 0 Henk 'm!

  • Freeaqingme
  • Registratie: April 2006
  • Laatst online: 18-09 15:55
Nu gebruik ik geen windows, laat staan dat ik ervaring heb met de com functions, maar waarom per se gebruik maken van de com functions, en niet gewoon iets als system() ?

No trees were harmed in creating this message. However, a large number of electrons were terribly inconvenienced.


Acties:
  • 0 Henk 'm!

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

Snake

Los Angeles, CA, USA

Net send? Staat de Messenger service wel aan? Bij XP >= SP2 en hoger staat die standaard af.

Dus misschien ook op je Server :)

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


Acties:
  • 0 Henk 'm!

  • Yoram
  • Registratie: Augustus 2004
  • Laatst online: 05-08 14:22
Snake schreef op zaterdag 22 augustus 2009 @ 15:04:
Net send? Staat de Messenger service wel aan? Bij XP >= SP2 en hoger staat die standaard af.

Dus misschien ook op je Server :)
Messenger service staat aan. Als ik op mijn server test.php open, werkt hij wel en krijg ik 'hoi' te zien.

Hallo!


Acties:
  • 0 Henk 'm!

  • HuHu
  • Registratie: Maart 2005
  • Niet online
Werkt iets simpels als dit überhaupt wel?

PHP:
1
phpinfo();

Acties:
  • 0 Henk 'm!

  • Yoram
  • Registratie: Augustus 2004
  • Laatst online: 05-08 14:22
HuHu schreef op zaterdag 22 augustus 2009 @ 15:16:
Werkt iets simpels als dit überhaupt wel?

PHP:
1
phpinfo();
Ja natuurlijk :P. Mijn server werkt verder prima.

Maar ik heb even zitten lezen/uitproberen, ik heb het nu zover dat ik inmiddels een foutmelding krijg waar ik iet meer mee kan.
code:
1
Fatal error: Uncaught exception 'com_exception' with message 'Failed to create COM object `WScript.Shell': Class not registered ' in C:\Server\Apache2\htdocs\roomcontrol\test2.php:8 Stack trace: #0 C:\Server\Apache2\htdocs\roomcontrol\test2.php(8): com->com('WScript.Shell', Array) #1 {main} thrown in C:\Server\Apache2\htdocs\roomcontrol\test2.php on line 8


Dus als ik het goed begrijp is er een class niet geregistreerd? Ik heb deze foutmelding in google geplakt, en trefwoorden als "Class not registered" en "Failed to create COM object `WScript.Shell'" gebruikt. Dat geeft geen hits waar ik wijzer uit kan worden.

Ik heb net ook gekeken naar system() dat doet het zelfde denk ik, alleen geeft het sowiezo een return_var.
En als ik exec() gebruik krijg ik weer een witte pagina te zien zonder enige foutmelding.

In de errorlog van de PHP server staat ook niks over dat er hier iets fout gaat.

Is er niet een andere manier om een programma van afstand te kunnen starten op mijn server via php ?

Hallo!


Acties:
  • 0 Henk 'm!

  • Borizz
  • Registratie: Maart 2005
  • Laatst online: 24-08 20:35
Dit heeft (bijna) zeker met de rechten van de gebruiker waaronder je webserver (of PHP indien fast cgi) draait te maken. Je zal deze gebruiker de juiste rechten moeten geven om het com object aan te mogen spreken en acties uit te mogen voeren op het com object.

Je kan het misschien beter toch met exec proberen om de foutmelding te bekijken. Geef dan wel een output en return_var parameter mee en print/echo deze, anders zie je inderdaad een wit scherm..

Je kan het ook op de commandline uittesten door het commando uit te voeren als de gebruiker waaronder de webserver draait, dit kan met het runas commando.

[ Voor 20% gewijzigd door Borizz op 22-08-2009 16:54 . Reden: runas methode toegevoegd ]

If I can't fix it, it ain't broken.

Pagina: 1