[php]Via PHP een windows service starten

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb nu een machine waarop windows 2000 staat met daarop IIS5

Om remote (via internet) sommige programma's te starten heeft iemand voor mij eens een ASP scripje gemaakt zodat ik kan inloggen op een website en aldaar remote een service kan starten of stoppen.

Opzich werkt dit wel alleen ik ben niet echt een voorstander van ASP, zelf snap ik er de ballen van, met PHP kan ik beter overweg, al ben ik ook niet echt een genie daarin maar het lukt me vrij aardig.

Nu dacht ik dus om ipv een ASP script een PHP script te gebruiken, PHP draaien op de machine is geen probleem.

Ik heb al gezocht maar ik kan eigenlijk nergens informatie vinden HOE je een service kan starten en/of stoppen via PHP op een windows machine en dat deze meteen controleert of de service al draait of niet.

Mijn vraag dus:

Kan het eigenlijk wel?
Zoja.... Hoe?

Acties:
  • 0 Henk 'm!

  • Osiris
  • Registratie: Januari 2000
  • Niet online
Wat is je ASP-script dan? Misschien kunnen we soortgelijke functies vinden :)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dit is geloof ik de ASP functie om een service te starten:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
function ControlService(Service, job)

    On Error Resume Next
    Set oService = GetObject("WinNT://" & DNSNetbiosName & "/" & Service)
    
    If job = 1 then oService.start
    If job = 0 then oService.stop
    
    If Err <> 0 then ControlService = -1
    Err.Clear 
    Set oService=nothing
    
end function


Zoals je ziet lijkt het niet echt op een PHP commando...

[ Voor 8% gewijzigd door Verwijderd op 21-06-2004 03:49 ]


Acties:
  • 0 Henk 'm!

  • Brakkie
  • Registratie: Maart 2001
  • Niet online

Brakkie

blaat

Op onderstaande link is veel te vinden over het starten van windows programma's met behulp van PHP. Misschien dat je er iets mee kan.

http://nl2.php.net/manual/nl/ref.exec.php

Systeem | Strava


Acties:
  • 0 Henk 'm!

  • Dryw.Filtiarn
  • Registratie: September 2001
  • Laatst online: 08-09-2022
Ik denk dat je zou moeten kijken naar de PHP system calls (system() o.a.).

Hier kun je informatie vinden over de executable die je aan moet roepen:
http://www.microsoft.com/...s/en-us/sc.asp?frame=true

=( Protected by witchcraft )=


Acties:
  • 0 Henk 'm!

  • narotic
  • Registratie: Maart 2002
  • Laatst online: 02-11-2021
Zoals gezegd inderdaad system() of exec() of gewoon de backtick operator gebruiken (safe mode moet daarvoor wel uit staan).

Dan het commando

code:
1
net start [servicenaam]


meegeven.

- = Step Into The Pit | Industrial Strength = -


Acties:
  • 0 Henk 'm!

  • Infinitive
  • Registratie: Maart 2001
  • Laatst online: 25-09-2023
Ik denk dat als je de php documentatiepagina over COM doorleest, dat je dat ASP scriptje rechtstreeks kan converteren naar php.

[ Voor 4% gewijzigd door Infinitive op 22-06-2004 01:03 ]

putStr $ map (x -> chr $ round $ 21/2 * x^3 - 92 * x^2 + 503/2 * x - 105) [1..4]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Het zal wel aan mij liggen maar ik kan nergens op die pagina's vinden wat het PHP commando is om een service te starten.

Voorbeeld.
Ik heb een service dat als naam heeft: Site3
Als ik een heel klein php scripje maak zoals omschreven door narortic :

code:
1
2
3
<?PHP
net start [Site3]
?>


Dan krijg ik zoals ik zelf verwacht al een error: Parse error: parse error, unexpected T_STRING in E:\WebServer\Websites\Site1\www\service.php on line 2

Ik heb wat gespeeld met wat commando's maar wat ik ook probeer ik blijf een error houden, op de opgegeven sites staan dus commando's maar geen waarmee je dus met PHP een windows service kan starten.

Misschien dat iemand me een voorbeeld kan geven hoe ik dus service Site3 kan starten en/of stoppen, want ik snap er echt de ballen van.

Acties:
  • 0 Henk 'm!

  • David
  • Registratie: Februari 2001
  • Laatst online: 20-09 07:23
Meer in de trant van:
PHP:
1
exec('net start Site3');

Dato DUO synth voor twee


Acties:
  • 0 Henk 'm!

  • Infinitive
  • Registratie: Maart 2001
  • Laatst online: 25-09-2023
Verwijderd schreef op 22 juni 2004 @ 01:06:
Het zal wel aan mij liggen maar ik kan nergens op die pagina's vinden wat het PHP commando is om een service te starten.
Daar is ook geen specifiek commando van php voor, daar zul je zelf het nodige werk voor moeten doen.

Ofwel het via een exec(), system() of `...` aanroepen van het programmatje 'net' met de benodigde parameters.

Ofwel via COM dat service component aanspreken. Als je dat ASP scriptje van jouw begrijpt, en je kijkt naar wat voorbeeldjes in php die gegeven zijn op die pagina, dan moet het je wel lukken. Zoniet, dan zul je toch eerst wat programmeerkennis moeten bijschaven (anders loop je bij vergelijkende dingen tegen hetzelfde probleem aan).

offtopic:
Mijn persoonlijke voorkeur is de COM optie. Maar merk op dat beide mogelijkheden alleen zullen werken op een win32 platvorm.

[ Voor 16% gewijzigd door Infinitive op 22-06-2004 01:18 ]

putStr $ map (x -> chr $ round $ 21/2 * x^3 - 92 * x^2 + 503/2 * x - 105) [1..4]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dat ASP proggie snap ik dus geen ballen val, dat is net het probleem.

Ik kan een bat filetje aanroepen via PHP
code:
1
exec(service.bat);


En in het bat file neerzetten:
code:
1
sc start Site3


Theoretisch zou dit moeten werken, echter ik wilde het 100% vanuit PHP doen, dus een PHP commando wat direct een service start net zoals dat ASP scripje.

Het probleem is echter dat ik ook de status wil weten van de service, dus sraait het al of niet, dit kan ik dus niet opvragen via zo'n bat file

[ Voor 17% gewijzigd door Verwijderd op 22-06-2004 01:40 ]


Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 14:28
Heb je de reactie van Dimension al gezien? Daar staat de oplossing namelijk.
Pagina: 1