hAmst0r Geschrieben 4. Juni 2009 Geschrieben 4. Juni 2009 (bearbeitet) Hi Leute, ich verzweifle momentan bzw. stehe wahrscheinlich auf dem Schlauch. Ich will einen Bot der in PHP geschrieben ist ausführen. Das ganze soll auch permanent laufen also habe ich mir zwei Shell Skripte erstellt. #!/bin/bash nohup /opt/lampp/htdocs/chanserver/bot.sh ausgabe.out 2>&1 1>/dev/null& und das zweite: #!/bin/bash while(true) do /opt/lampp/bin/php /opt/lampp/htdocs/chanserver/ChatBot/startbot.php done Das ganze funktioniert auch soweit - der Bot hat einen Parser dieser ist in der parser.php zu finden und er funktioniert auch. In der parser.php ist definiert das ein geflüsterter Text die "cmd.php" includiert um zu checken ob es ein befehl ist oder nicht. if ($nick != $this->bot['nick'])# include("./cmd.php"); Und genau an dieser Stelle bekomme ich einen Fehler nämlich Warning: include(): Failed opening './cmd.php' for inclusion (include_path='.:/opt/lampp/lib/php') in /opt/lampp/htdocs/chanserver/ChatBot/inc/parse.php on line 323 Mittlerweile habe ich schon alles durch. -> Allen Daten mal temporär 777 gegeben allen den Benutzer root gegeben, auch als solcher ausgeführt etc. Nichts hat geholfen. Habe dann angefangen zu googlen und bin auf Threads wie diesen gestossen, was auch nichts geholfen hat. Die Ordnerstruktur ist auch korrekt - Dieses Skript ist schonmal auf einem anderen Server mit genau dem selben Code gelaufen ... System ist ein Suse Linux 11.1 Server mit installiertem lampp. Ich hoffe mir kann jemand sagen wo der (denk)Fehler liegt Hamster Bearbeitet 4. Juni 2009 von hAmst0r Zitieren
lupo49 Geschrieben 4. Juni 2009 Geschrieben 4. Juni 2009 Probier mal das: #!/bin/bash cd /opt/lampp/htdocs/chanserver/ChatBot/ while(true) do /opt/lampp/bin/php startbot.php done Alternativ könntest du in der parser.php den Pfad zur cmd.php hart eintragen. if ($nick != $this->bot['nick']) include("/opt/lampp/htdocs/chanserver/ChatBot/cmd.php"); Solche Bots können übrigens unangenehme Ressourcenfresser werden, wenn Sie in eine Endlosschleife kommen. Eventuell mittels "nice" die Priorität auf ganz niedrig setzen. Zitieren
hAmst0r Geschrieben 5. Juni 2009 Autor Geschrieben 5. Juni 2009 Hallo, danke für deine Antwort. Das funktioniert so - ja. Aber ohne nohup nützt mir das ganze nicht viel weil ich ja nicht immer die Console offen lassen kann . Hart eintragen will ich es nicht, weil das gesamte Script mehrere includes hat die ich dann alle ändern müsste... Hamster Zitieren
DevilDawn Geschrieben 5. Juni 2009 Geschrieben 5. Juni 2009 Aber ohne nohup nützt mir das ganze nicht viel weil ich ja nicht immer die Console offen lassen kann . Dein PHPScript könnte selber chdir() machen, nicht der wrapper. Und anstelle des nohup könnte dein Bot auch einfach sauber forken und nicht terminieren, das detached den Prozess auch von der Shell Zitieren
hAmst0r Geschrieben 5. Juni 2009 Autor Geschrieben 5. Juni 2009 Dein PHPScript könnte selber chdir() machen, nicht der wrapper. War ja so auch nie geplant das war ja nun ein Beispiel von lupo. Und anstelle des nohup könnte dein Bot auch einfach sauber forken und nicht terminieren, das detached den Prozess auch von der Shell Und der Prozess taucht dann so auch in ps -ax auf? Sowas ähnliches habe ich damal glaube ich schonmal probiert aber da der Chatserver alle paar Tage neustartet hats dann jedesmal dem Bot die Beine weggezogen . Also ich bin mit Nohup früher immer gut gefahren und bin eigentlich ein Freund von "Never touch a running System" bzw. "Never change a winning Team". Programmiert habe ich schon Jahre nichtmehr abgesehen von den Pflichtprogrammen in der Schule deshalb will ich so wenig wie möglich in meinem Script ändern. Grüße Hamster Zitieren
lupo49 Geschrieben 5. Juni 2009 Geschrieben 5. Juni 2009 Was passiert, wenn du das so startest? #!/bin/bash cd /opt/lampp/htdocs/chanserver/ nohup bot.sh ausgabe.out 2>&1 1>/dev/null& Die bot.sh sollte dann wie folgt aussehen: #!/bin/bash while(true) do /opt/lampp/bin/php startbot.php done Zitieren
hAmst0r Geschrieben 6. Juni 2009 Autor Geschrieben 6. Juni 2009 Hi, er sagt dann komischerweiße das er die "bot.sh" nicht findet obwohl beide in opt/lampp/htdocs/chanserver liegen. Grüße Hamster Zitieren
lupo49 Geschrieben 6. Juni 2009 Geschrieben 6. Juni 2009 ... Gibt es den Bot irgendwo zum Laden? Ich würde jetzt alle includes in den PHP-Skripten mit einer Pfadvariablen versehen, die dann in einem conf-Skrpt auf das entsprechende Working-Directory zeigt. Zitieren
hAmst0r Geschrieben 7. Juni 2009 Autor Geschrieben 7. Juni 2009 Nee Sorry - ist eine komplette Eigenkreation. Dann werd ich dies bei Gelegenheit halt mal so machen :S Danke für deine Hilfe! Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.