PHP PHA-Skript aus PHP (oder HML) aufrufen

cumulonimbus8

Fleet Admiral
Registriert
Apr. 2012
Beiträge
19.480
Hallo!

Im Zuge der Einrichtung einer Software begegnen mir regelmäßig Warnmeldungen im Sinne von «Ooops! Da hast du aber noch dies und das vergessen!» obwohl ich mich schritt für schritt durch eine (mangelhafte…) Anleitung quäle die ein Ü-Ei nach dem anderen zieht.

Please install some plugins
In order to use XXXXXX you need to install some plugins, such as the default theme and the core visualizations. To do so you need to utilize the plugin install script which can be found in /scripts/plugin.php inside the XXXXXX folder.
$ php scripts/plugin.php install theme-default
$ php scripts/plugin.php install "visualization*"


Damit steh ich wie der Ochs vorm Tor. Was ich lokal unter XAMPP noch über die Shell hinbekam, einfach das an die PHP.EXE zu verfüttern, das geht auf einem gehosteten Server nicht (ach ja; nächste Meldung… was ist TWIG, und wie sieht da ein Skipt aus???) Also muss ich das über ein Skipt machen…
Lokal bekomme ich es nicht mal mit Anleitungen & Copy-Paste hin ein ECHO innert HTML auszulösen (schön brav in <script> und <? PHP … gepackt).

Auf dem Server müsste also von einer höher im Baum verankerten URL (die sind schlau da; ich sollte um bis zur Meldung zu kommen das URL-Verzeichnis auf einen Ordner legen der auf der Ebene des o.g. /script/ liegt sodass ich gar nicht da reinkomme…) auf nnnn/scripts/plugin.php zugreifen um dieses mit den Parametern zu füttern. Habe ich in mehreren Syntaxen versucht, nichts klappt. Wenn ich immerhin eine primitive
<? PHP
phpinfo();
?>
hinkriege, wie müssen die oben angegeben $-Zeilen in einer PHP-Datei korrekt aussehen, samt der Ebene darüber, um der Anweisung Folge zu leisten? Oder kann man die plugin.php über die Kommandoz…, äh, URL, direkt mit Parametern füttern?

CN8
 
cumulonimbus8 schrieb:
Damit steh ich wie der Ochs vorm Tor. Was ich lokal unter XAMPP noch über die Shell hinbekam, einfach das an die PHP.EXE zu verfüttern, das geht auf einem gehosteten Server nicht (ach ja; nächste Meldung… was ist TWIG, und wie sieht da ein Skipt aus???) Also muss ich das über ein Skipt machen…
Twig ist eine Template-Engine.... Das hätte dir aber auch ne Googlesuche verraten.

Und was das Ausführen solcher Install-Scripte ohne Shell angeht: Geht oftmals nicht. Manche Scripts sind gezielt für die Shell geschrieben. Ich schreib auch sehr viel für die Shell. Das hat sehr viele Vorteile:
- keine Sicherheits-Huddeleien
- deutlich höhere Performance
- weder das Memory Limit noch das Zeitlimit greifen... deshalb kann man z.B. bei Magento den Indexer über die Shell starten.

Und warum kann man Shell-Scripts nicht über den regulären Parser ausführen? Na ja, davon abgesehen, dass die Pfade nicht passen: Das Folgende ist absolut üblich...
PHP:
if (PHP_SAPI !== 'cli')
{
	print_r("access restricted");
	exit;
}

Du hast 3 Chancen...
1.) Du bezahlst jemanden, der sich damit auskennt.
2.) Du suchst dir einen ANSTÄNDIGEN Hoster, der dir Shell-Zugang gewährt
3.) Du richtest dir eine LAMP-Umgebung ein, die in etwa der deines Hosters entspricht. Darauf richtest du dein Programm ein. Da du hier problemlos in die Shell kommst, kannst du da alles was nötig ist installieren. Danach kopierst du den Kram zurück auf den Live-Server und hoffst, dass es funktioniert.
 
Twig ist eine Template-Engine.... Das hätte dir aber auch ne Googlesuche verraten.
Das Stand da.
Und was ist wiederum eine Template-Engine..? Templates wofür? Gelesen habe ich das zwar (bei TWIG selbst sogar, so doof bin ich nun auch), kaufen kann ich mir nichts dafür noch weiß ich was die meinen was ich damit soll.

Du hast 3 Chancen...
Auf meinem Mist ist die ganze Idee nicht gewachsen - ich soll es ›nur zum laufen kriegen‹.
1.) Du bezahlst jemanden, der sich damit auskennt.
Wie kommt du da auf ich? Das Sparschwein nennt sich Chef…
2.) Du suchst dir einen ANSTÄNDIGEN Hoster, der dir Shell-Zugang gewährt
Da muss ich passen weil ich nicht auf die Idee gekommen bin nach so was zu fragen.
3.) Du richtest dir eine LAMP-Umgebung ein, […] Danach kopierst du den Kram zurück auf den Live-Server und hoffst, dass es funktioniert.
Das klingt am Ende gar nicht mal so dumm. Allein schon mal meine lokale Struktur mit dem Rohzustand auf dem Server abzugleichen kann schon helfen.

Fazit: ich kann kein PHP-Skript schreiben (noch irgendwie einbetten) das ein weiteres auslöst?

CN8
 
cumulonimbus8 schrieb:
Fazit: ich kann kein PHP-Skript schreiben (noch irgendwie einbetten) das ein weiteres auslöst?
Klar geht das. exec oder shell_exec machen sowas. Ob dein Hoster das aber zulässt, kannst nur du ausprobieren.
 
@Nase:
«denken hilft» - dann denk mal drüber nach was ich mit deinen Infos soll.
(Die Aufgabe worum es geht? Steht oben dick in Braun.)

Wo gehört denn wenn diese shell_exec («oder sowas») hin um es tasten zu können?

CN8
 
cumulonimbus8 schrieb:
Und was ist wiederum eine Template-Engine..? Templates wofür?
Ein Template ist eine Vorlage, die aus etwas allgemein gehaltenem etwas komplexeres produziert. Twig produziert aus der Twig-eigenen Syntax (die eben recht kompakt ist) viel umfangreicheren PHP-Code, der dann auch wirklich lauffähig ist. Weniger schreiben -> weniger Tippfehler

Das klingt am Ende gar nicht mal so dumm. Allein schon mal meine lokale Struktur mit dem Rohzustand auf dem Server abzugleichen kann schon helfen.
Das ist eigentlich Standard-Verfahrensweise... XAMPP ist für Kindereien von Bastelfritzen. Wenn man professionelle PHP-Entwicklung macht (also: nennenswerte Einkünfte daraus bezieht), dann tut man das auf eigenen LAMP-Maschinen, evtl. noch zum Vergleich ne Kiste mit PostgreSQL statt MySQL/MariaDB oder eine mit nginx statt Apache.
Warum? Weil quasi jeder Hoster auf LAMP setzt. Nur die PHP-Version und aktiven Features musste noch abgleichen. Aber die Regel ist: Apache 2.2, MySQL 5(.x) und PHP 5.3 oder 5.4 (das macht aber n großen Unterschied)

exec() könntest du, wie Nase schon sagte, mal probieren... aber ich bezweifle, dass der Hoster das zulässt, wenn er dir schon keinen Shellzugang gibt. Mit exec() kann zu viel Schindluder getrieben werden.
Ergänzung ()

cumulonimbus8 schrieb:
Wo gehört denn wenn diese shell_exec («oder sowas») hin um es tasten zu können?

An eine passende Stelle im PHP-Code. Lies die Dokumentation... und bete & hoffe, dass dein Chef das hier nicht liest. Dir fehlen offensichtlich komplett die Voraussetzungen umd einen Job zu erledigen.
 
Sorry, habe nur versucht, einen Anstoß in eine Richtung zu setzen, die dir eventuell helfen könnte. Mach deinen Kram halt alleine.
 
@Nase
Erspar dir mal solche Sprüche, ja? Deine Denkanstöße hatte ich heute Morgen schon von ganz alleine - Ergebnisse & konkrete Antworten wollte ich haben, um die du dich drückst.

@Daaron
Mein Job & meine Ausbildung ist nicht PHP… Da manche ich mir keine Gedanken. Mein Job ist aktuell eine Web-Anwendung die schön brav Ü-Eier aus dem Hut zaubert. Zuletzt PHP, dann dieses TWIG.
Und die mir nicht erklärt was ich und z.T. auch warum ich es tun soll, was das gedachte Ziel ist.

Also werde ich, da man mir nicht mal simpel 2 Zeilen Syntax vorkauen kann, versuchen Bücher zu wälzen in denn das drinsteht. Mehrere Stunden statt eines Muster das ich direkt einsetzen kann (wie diese Softwarefritzen mit ihrem TWIG).

CN8
 
Warum verwendet ihr PHP, wenn ihr keinen PHP-Entwickler an der Hand habt, der euch im Problemfall zur Hand gehen kann? Wenn du mit http://www.php.net/manual/de/function.exec.php nicht klar kommst, dann solltest du das Projekt definitiv abgeben, denn im Zweifel löst du hier nur Serverkatastrophen durch Bedienfehler aus. Wir reden hier von schweren Sicherheitsmängeln bis hin zum totalen Datenkollaps.

Außerdem hast du mit ner lokalen LAMP-Umgebung schon einen Ansatz, der keine PHP-Kenntnisse voraussetzt. Alternativ kannst du auch mit deinem Hoster reden, ob er nicht doch einen SSH-Zugang gewähren kann. Oooooder du wendest dich an den Entwickler deiner Anwendung, ob er dir nicht helfen kann.

Auf keinen Fall solltest du daran herumfrickeln, wenn du nicht weißt, was du tust.
 
Wir verwenden PHP nicht (in dem Sinne) wir benutzen es wie wir das Auto benutzen. Fertiges verwendet eine korrekte Syntax um eigene PHP-Skripte laufen zu lassen, der Server kann PHP und wir verwenden dieses Fertige…
„Öffne die Motorhaube!“ heißt für mich den Entriegelungshebel (innen) zu kennen (jaja, ich bin so pfiffig zu wissen, dass es so was gibt) und draußen wie ich die Sicherung übergehe um dann zu wissen ob die Haube von selbst hält oder einer Stange bedarf. Da interessiert es mich nicht ob die Hauptentriegelung per Elektro, per Bowdenzug oder Magie funktionert, geschweige wie diese Komponenten es tun. Ich muss wissen wo der Entriegelungshebel ist und wie die Sperre zu lösen ist. Nur bekomme ich aus meiner Warte nichts denn das „Öffne die Motorhaube!“ vor die Nase und weiß nicht mal ob der hinten oder vorne ist…
Kurz: wir sollen ja nur einfach Anweisungen ausführen…

Oder mehr: Wir würden diese Fertige ja gerne nutzen wenn die Skritpe die diese Meldung auswerfen (immerhin sind wir schon mal bis da hin) nicht wenigstens so intelligent wären einen Default (von was auch immer) zu generieren (denn alles bis hierher ist ja auch eine Art Default) um einfach Weiter zu klicken um dann mit GUI-Mitteln (ach nein, kommt ja noch diese TWIG-Anfrage) das endeinzurichten. Einfach nur indem wir Bildschirmanweisungen ausführen.
 
Du KANNST nicht alles per Bunti-Klicki lösen, das habe ich dir bereits erklärt. PHP-CLI hat gravierende Vorteile, die manchmal eben unumgänglich sind.

Und daher sage ich: Bezahl jemanden, der sich damit auskennt. Um bei deinem Auto-Beispiel zu bleiben:
- Scheibenwischwasser ist alle -> das kannst du allein
- Ölstand-Warnung kommt -> kannst du evtl. allein nachfüllen, aber musst einen PROFI BEZAHLEN, dass er rausfindet wo das Öl hin ging
- Motorkontrolle leuchtet -> du kannst gar nichts machen, du musst Geld in die Hand nehmen

Und genauso ist es hier. Das sind Warnungen & Fehlermeldungen, die über "Schweibenklar is alle" hinaus gehen. Also entweder habt ihr einen Profi im Team, der es selbst kann, oder ihr müsst einen Profi von außen einkaufen.

Was mir bei dir immer auffällt: Du hast irgend welche aus der Luft gegriffenen Probleme, die du nie komplett ausformulierst. Wenn wir dann langsam aber sicher versuchen, dir Lösungsansätze aufzuzeigen, findest du immer neue Gründe, warum der-und-der Ansatz nicht geht. Mal ist dir die Dokumentation zu englisch, mal das ideale Programm zu groß, hier willst du partout nicht einsehen, dass das eben eine Aufgabe für erfahrene PHP-Leute ist, die sich idealerweise noch mit Twig auskennen (wobei ich das bezweifel).
Wir sind hier in einem Forum, wo dir kostenlos und freiwillig geholfen wird. Das heißt aber nicht, dass wir dir all deine Probleme haarklein vorkauen. Alles was über triviale Lösungsansätze hinaus geht kostet nun einmal Geld.
 
Alles was über triviale Lösungsansätze hinaus geht kostet nun einmal Geld.

wie müssen die oben angegeben $-Zeilen in einer PHP-Datei korrekt aussehen, samt der Ebene darüber, um der Anweisung Folge zu leisten? Oder kann man die plugin.php über die Kommandoz…, äh, URL, direkt mit Parametern füttern?
Und diese 2 Fragen sind nicht trivial? Ich halte sie geradezu für primitiv.

CN8
 
Diese "Dollar-Zeilen" sind Bash Eingaben... erkennt man an dem $, das ist (außer bei root) das letzte Zeichen innerhalb des aktuellen Arbeitspfades, vor dem Cursor.

$ php scripts/plugin.php install theme-default
heißt also:
In einem definierten Arbeitsverzeichnis (das hier nicht angegeben ist, das musst du schon dem Handbuch entnehmen... evtl. ist ja der Webroot gemeint), starte "php" (also den PHP-CLI - Modus) mit der Datei ./scripts/plugin.php und übergib dieser Datei die Parameter "install" und "theme-default".

Du KÖNNTEST also so dreist sein, einfach in demselben Pfad, von dem du obigen Aufruf starten sollst, den Aufruf mal über exec() bzw. shell_exec() zu starten, gemäß den Informationen, die dir die Dokumentation bei http://php.net dazu liefert.
Ohne nähere Kenntnis des gesamten Programms, des Ziels der ganzen Aktion sowie der plugin.php sag ich bestimmt nix definitives dazu. Ansonsten tippst du blind irgendwas ab und crashst den halben Server. Nenene.

ABER: Wie ich schon sagte beginnen solche CLI-Scripts oftmals mit "Wenn es keine CLI ist, brich zur Sicherheit ab". Und selbst wenn das nicht so ist, für CLI gelten ganz andere Sicherheitsregeln als für den regulären Interpreter (egal ob mod_php, FastCGI, PHP-FPM,...).
Und wie schon gesagt. Aus Sicherheitsgründen wird dir der Hoster exec() & Co mit hoher Wahrscheinlichkeit eh um die Ohren donnern.

In all den Stunden, die der Thread jetzt offen ist, hättest du schon längst eine Replikation auf ein lokales LAMP-System machen können um zu gucken, was wie funktioniert und was dabei passieren soll.
 
Zurück
Oben