Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

(include_path='.:/opt/lampp/lib/php') Brint mich zum Verzweifeln

Empfohlene Antworten

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

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.

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

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

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

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

Hi,

er sagt dann komischerweiße das er die "bot.sh" nicht findet obwohl beide in opt/lampp/htdocs/chanserver liegen.

Grüße

Hamster

...

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.

Nee Sorry - ist eine komplette Eigenkreation.

Dann werd ich dies bei Gelegenheit halt mal so machen :S

Danke für deine Hilfe!

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.