Eine Serveranwendung oeffnen/schliessen?

So ich habe das Problem gefunden, es liegt daran weil ich die CMD durch den Pfad öffne und der Server dann nicht weiß wo die server.cfg liegt.
Ich muss also erst zum Verzeichnis wechseln und dann den Server starten.
Alles okey und gut. Nur dass er mir eine Meldung gibt es die Datei samp-server.exe nicht existiert.

Code:
exec('cd C:\xampp\htdocs\sampserver\Admin');
if(exec('start samp-server.exe')) {
echo "Server gestartet!";
}
 
Also, das mit dem cd innerhalb von exec() kannst du dir sparen. Das hat nämlich zur Folge, das mit exec() ein Command-Line-Prozess gestartet wird (ähnlich cmd.exe am Windows-Desktop starten), cd in das Verzeichnis mit sofortigem exit, was die Kommand-Line wieder schließt.

Du müsstest es so versuchen:

PHP:
// Altes Verzeichnis speichern
$olddir = getcwd();
// Jetzt mit PHP! einen Verzeichniswechsel durchführen
chdir('C:\xampp\htdocs\sampserver\Admin');
// Dann Kommand starten
if(exec('start samp-server.exe')) {
  echo "Server gestartet!";
}
// Wieder in altes Verzeichnis zurück springen
chdir($olddir);

Desweiteren empfehle ich, mal die Ausgabe von exec() und evtl. den Fehler-Code des aufgerufenen Kommands zu speichern/auszugeben:

PHP:
$last_line = exec('start samp-server.exe', $ausgabe, $exitcode_samp_server);
if( $exitcode_samp_server != 0 )
{
  echo "Fehler! samp-server.exe konnte nicht gestartet werden!<br/>";
  foreach( $ausgabe as $zeile )
  {
    echo "$zeile<br/>";
  }
}
else
{
  echo "samp-server.exe gestartet.<br/>";
}

Servus.
 
Vielen Dank klappt :D (Y)

Mir is aufgefallen wenn ich den server starte geht zwar alles, aber sobald ich den server gestartet habe ladet die seite solange bsi ich es gestoppt habe. Kann ich den server nicht starten und dabei mit php weiter arbeiten?

keiner ne idee :l
 
ReqonxS hat gesagt.:
Mir is aufgefallen wenn ich den server starte geht zwar alles, aber sobald ich den server gestartet habe ladet die seite solange bsi ich es gestoppt habe. Kann ich den server nicht starten und dabei mit php weiter arbeiten?

Mit dieser Beschreibung kann ich nichts anfangen. Wo lädt es bis du was gestoppt hast? Evtl. PHP-Code?
 
Also ich starte jetzt den Server über die Seite (Starten Button), so der Server startet ganz normal.
Aber die Seite ladet die ganzezeit also ich kann zB. nicht schreiben server gestartet, weil sie endlos ladet, bis ich den Server manuell geschlossen habe. Habe ich die Anwendung geschlossen, so hört es auf zu laden und ich bekomme erst dann server gestartet nachricht. Also ich kann mit php nicht weiter arbeiten.
 
Ok, ich hab mich mal schlau gemacht und herausgefunden, das dieser samp-server kein wirklicher Dienst, der im Hintergrund gestartet werden kann. Ich habe aber folgenden Lösungsvorschlag:

- Installier die PSTools (http://download.sysinternals.com/files/PSTools.zip) von Sysinternals auf der Maschine, auf der der samp-server laufen soll.
- Schreib in dein Script folgenden exec()-Command:

PHP:
$last_line = exec('psexec -d samp-server.exe', $ausgabe, $exitcode_samp_server);
if( $exitcode_samp_server != 0 )
{
  echo "Fehler! samp-server.exe konnte nicht gestartet werden!<br/>";
  foreach( $ausgabe as $zeile )
  {
    echo "$zeile<br/>";
  }
}
else
{
  echo "samp-server.exe gestartet.<br/>";
}

Der -d-Parameter (don't wait) erlaubt, das der Rest des Codes weiter laufen kann, und der Prozess damit im Hintergrund arbeitet. Wie man den dann allerdings beenden kann, weiß ich noch nicht. Vermutlich über taskkill (http://technet.microsoft.com/en-us/library/cc725602(v=ws.10).aspx).
 
Zurück