Zum Inhalt springen

Empfohlene Beiträge

Geschrieben (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 von hAmst0r
Geschrieben

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.

Geschrieben

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

Geschrieben
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 :)

Geschrieben
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

Geschrieben

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

Geschrieben

...

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.

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...