[Help!] Running batch on server from php

Status
Niet open voor verdere reacties.

ruby159

Gebruiker
Lid geworden
6 jan 2007
Berichten
98
Hoi,

Ik Probeer een .exe te laten starten via php op de server pc dat doe ik voor mijn gebruikers. ik heb dit als php bestand
PHP:
<?php
if(isset($_POST['submit']))
{
echo exec('servershutdown.bat');
echo "Done!";
} else {
// display the form
?>
<form action="" method="post">
<input type="submit" name="submit" value="GA!">
</form>
<?php
}
?>

en dit staat erin het servershutdown.bat
Code:
taskkill /IM server.exe

als ik dat batch bestandje aanklik zonder php werkt het prima maar zodra ik via php doe gebeurt er niks er staat wel Done! maar dat is alles er is niks gestopt

zo iemand weten waardoor dit komt:confused:
Windows 2000 server met xampp (apache + mysql) en het is me eigen server

gr Ruby
 
Beste Ruby,

Het Exec command heeft een hoop beveiligingen in zich zitten om te voorkomen dat er onrechtmatige bestanden worden uitgevoerd. Om te kijken wat er gebeurd moet je even de output lezen.

string exec ( string $command [, array &$output [, int &$return_var]] )

Probeer de volgende code eens:
PHP:
  exec("servershutdown.bat", $output, $return_var);
  echo "<pre>\n";
  print_r($output);
  echo "Functie " . (($return_var) ? "succesvol" : "niet succesvol") . "uitgevoerd!\n";

De $output zal nu alles weergeven wat je normaal in je CMD venster zou zien. De $return_val geeft weer of de functie succesvol is uitgevoerd of niet.

Als je de output van bovenstaande neerplakt dan kunnen we misschien zien wat fout zit.

Wout
 
Bedankt voor je reactie:thumb:.

Ik ga het nu proberen

Resultaat:

Het werkt jammer genoeg niet er komt dit te staan
Code:
Array
(
    [0] => 
    [1] => C:\xampp\htdocs\server>taskkill /IM server.exe
)
Functie succesvoluitgevoerd!

Er staat succesvol, maar de server is niet gestopt

Mischien nog een idee?

alvast bedankt
Ruby
 
Laatst bewerkt:
Beste Ruby,

Aan de output van het exec command te zien voert hij de BATch netjes uit. Ik verdiep me niet zo in de servers als het gaat om processen starten, maar als ik kijk naar mijn procesnamen dan heb ik geen task met de imagename "server.exe" terwijl ik ook XAMPP draai.

De fout zit hem niet in de PHP en zover ik nu kan zien ook niet in het uitvoerne van het Exec command. Dus logischerwijs kom ik bij de Batch file uit. Ik raad aan om daar dus even naar te kijken.

Wout
 
Weer bedankt voor je snelle reactie:thumb:

Nee, Ik denk ook niet dat het aan de php ligt maar ook niet aan de batch... Want als ik de batch op de computer open (los van php) sluit server.exe wel af.

Maar wat bedoel je met
Code:
dan heb ik geen task met de imagename "server.exe" terwijl ik ook XAMPP draai.
Dat is de proces naam van de server.

Maar als dit niet werkt he, heb je dan mischien nog een ander idee hoe ik een .exe via php kan starten en stoppen het is namelijk voor een game control panel die ik voor mezelf aan het maken ben?

Ruby
 
Zoals gezegd zijn servers en CMD niet mijn specialiteit, dus momenteel gok ik maar wat :-p :

- taskkill => beëindigd een proces dat draait.
- /IM => geeft aan dat je de ImageName opgeeft

Kortom: je Batch moet de imagename opgeven van je server. Nu is dat volgens jou server.exe maar bij mijn XAMPP server heb ik de volgende gerelateerde processen:
- apache.exe
- mysqld.exe

Maar misschien heb jij een andere versie van XAMPP of bedoel je iets anders. Maar als jij zegt dat het gewenste resultaat wel bereikt wordt als je de Batch start zonder PHP, dan is er niks mis met de Batch file. In dat geval zou het beveiliging van PHP of Apache kunnen zijn. Het is natuurlijk wat alternatief om je server af te sluiten met een proces dat je server nodig heeft :-p.

Wout
 
hey,

nou kijk het gaat mij niet om apache of xampp, het gaat om een game server die heet server.exe die gameserver directory staat in apache omdat in een control panel aan het maken ben en zo de server via internet te benaderen is dus wat ik bedoel is

-een pagina waar mee je de game server kun starten en kunt stoppen

Mischien weet je dit wel of dat vanuit php kan of dat er een batch bestand aanwezig hoort te zijn.

Ruby
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan