Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Linuxprogramm mit php aufrufen (https://www.delphipraxis.net/120836-linuxprogramm-mit-php-aufrufen.html)

Maa83 17. Sep 2008 13:50


Linuxprogramm mit php aufrufen
 
Hallo Leutz,

ich hab da ein kleines Problem und weis absolut nicht wie ich weiter komme.

Ich habe mir eine Webseite gebastelt auf der man MP3-Dateien hochladen kann. Bei Upload möchte ich nun automatisch aus einer MP3-Datei ein Sample von z.B. 20 Sekunden schneiden welches von Minute 01:00 bis Minute 01:20 geht.

Unter Windows gibt es das Programm MP3Splt. Dieses kann man mit folgenden Parametern aufrufen:

mp3splt datei.mp3 01:00 01:20

und schon steht im Verzeichnis der MP3-Datei datei.mp3 eine zweite Datei mit den 20 Sekunden.

Das gleiche Programm gibt es nun auch für Linux. Ich habe das Programm in ein Verzeichnis hochgeladen. Wie kann ich das Programm nun über php mit den Parametern ansprechen?

Muss ich das Programm in ein bestimmtes Verzeichnis laden oder ist das egal?

Ich habe keinerlei Ahnung von Linux.

Ich habe schon alle Möglichen Aufrufe für php gefunden: shell_execute(), exec()... aber tut alles nicht.

Hoffe ihr könnt mir helfen.

DeddyH 17. Sep 2008 13:56

Re: Linuxprogramm mit php aufrufen
 
Schon mal hiermit versucht? http://de3.php.net/manual/de/function.system.php

Maa83 17. Sep 2008 14:07

Re: Linuxprogramm mit php aufrufen
 
wenn ich den code

<?php
echo '<pre>';

// Gibt das gesamte Ergebnis des Shellkommandos "ls" aus und hält als
// Rückgabewert die letzte Zeile dieser Ausgabe in $last_line. Der
// Rückgabewert des Shellkommandos wird in $retval gespeichert.
$last_line = system('ls', $retval);

// Ausgeben zusätzlicher Informationen
echo '
</pre>
<hr />Letzte Zeile der Ausgabe: ' . $last_line . '
<hr />Rückgabewert: ' . $retval;
?>

verwende, bekomme ich keinerlei Ausgabe. Nur in der Variable $retval steht der Wert 127. Egal was ich für einen Befehl übergebe. Selbst bei einem ungültigem Befehl bekomme ich diesen Wert...

Fehlt mir igendeine Initialisierung? oder ein Recht?

DeddyH 17. Sep 2008 14:12

Re: Linuxprogramm mit php aufrufen
 
Die Linien kommen auch nicht?

Maa83 17. Sep 2008 14:19

Re: Linuxprogramm mit php aufrufen
 
Sorry, ich meinte es kommt keine Ausgabe von der Funktion.
Die Linien kommen natürlich. So sieht das ganze in etwa aus:


----------------------------------
Letzte Zeile der Ausgabe:
----------------------------------
Rückgabewert: 127

DeddyH 17. Sep 2008 14:25

Re: Linuxprogramm mit php aufrufen
 
Dann weiß ich im Moment auch nicht mehr weiter, hab lange nichts mehr in PHP gemacht, sorry.

jfheins 17. Sep 2008 14:32

Re: Linuxprogramm mit php aufrufen
 
Ist der PHP safe mode aktiviert?

Maa83 17. Sep 2008 14:37

Re: Linuxprogramm mit php aufrufen
 
ja, stimmt, safe-mode ist On. Gibt es eine Möglichkeit den Abzuschalten? Ich habe ja nur einen virtuellen Server...

hab gerade die Möglichkeit gefunden des safe-mode auszuschalten. Kann ich aber erst machen wenn meine Domain freigeschalten wurde, im Moment arbeite ich noch im default-Verzeichnis und dort habe ich nicht die Berechtigung den Modus auszuschalten.

Vielen Dank für den Tipp.

Werde in ein paar Tagen schreiben ob es weiterhin Probleme gibt.

SubData 17. Sep 2008 14:51

Re: Linuxprogramm mit php aufrufen
 
Wenn du safe mode deaktivierst und danach den Server mit ner PHP-Anwendung abschießt, wird dein Hoster dir gewaltig in den Hintern treten bzw. du darfst ein ggf. notwendiges Neuaufspielen des Systems bezahlen.

Sei also vorsichtig damit.

Maa83 17. Sep 2008 15:30

Re: Linuxprogramm mit php aufrufen
 
gut zu wissen ;) birgt das Abschalten noch sonstige Risiken? Können irgenwelche Leute somit leichter in das System eindringen? Gibt es eine Möglichkeit den Safe-Mode mittels eines PHP-Befehls ein und auszuschalten? Dann wäre es ja möglich immer nur für einen kurzen Moment den Safe-Modus auszuschalten. Oder gibt es Möglichkeiten den Safe-Modus nur für gewisse Bereiche einzuschalten? Ist mir alles noch nicht so ganz klar. :gruebel:

jfheins 17. Sep 2008 16:18

Re: Linuxprogramm mit php aufrufen
 
http://de.php.net/manual/de/features.safe-mode.php ;)

Maa83 18. Sep 2008 08:13

Re: Linuxprogramm mit php aufrufen
 
vielen Dank für den Link. Faulheit siegt halt doch so oft ;)

Maa83 18. Sep 2008 14:52

Re: Linuxprogramm mit php aufrufen
 
so, hab den PHP-Safe-Modus nun ausgeschalten.

Nun funktioniert zumindest schonmal z.B. dieser Command:
$last_line = system('ls', $retval);

der Versuch mit dem MP3-Splitprogramm gibt jedoch nach wie vor keine Ausgabe.

die php-Datei, die MP3-Datei sowie die mp3splt-Datei befinden sich in dem gleichen Verzeichnis. Nun versuche ich diesen Aufruf:
$last_line = system('mp3splt cat.mp3 01.00 01.20', $retval);

es kommt aber keinerlei Ergebnis. Kann mir jemand weiterhelfen? Ist es normal das die mp3slpt-Datei keinerlei Endung hat? Hab ich einen Denkfehler? Muss ich irgendwelche Pfadangaben machen?

DeddyH 18. Sep 2008 14:56

Re: Linuxprogramm mit php aufrufen
 
Dass die Datei keine Endung hat, ist ganz normal. Wenn sie auch keine Ausgaben macht, ist es klar, dass in $retval nichts zurückkommt. Lies Dir zur Not noch mal die oben verlinkte Hilfe durch.

Maa83 18. Sep 2008 15:02

Re: Linuxprogramm mit php aufrufen
 
ja, es passiert aber überhaupt nichts. Das in der Variable kein Wert steht wär mir ja wurscht, aber es wird auch keine neue MP3-Datei erzeugt wie gewünscht. Eigentlich sollte im gleichen Verzeichnis eine MP3 mit dem angebenen Ausschnitt erstellt werden.

DeddyH 18. Sep 2008 15:05

Re: Linuxprogramm mit php aufrufen
 
Das Programm hat Schreibrechte in seinem Ordner? Steht das PHP-Script im selben Ordner wie das Programm? Dann müsstest Du ein "./" vor den Aufruf schreiben (ohne Anführungszeichen). Hat das Programm auch das "Execute"-Flag gesetzt (kann man mit ls -la abfragen)?

Maa83 18. Sep 2008 15:39

Re: Linuxprogramm mit php aufrufen
 
Execute Rechte sind vergeben. Habs auch mit dem ./ versucht. Hat alles nichts genutzt.

DeddyH 18. Sep 2008 15:45

Re: Linuxprogramm mit php aufrufen
 
Dann ist die Frage, ob das Programm überhaupt gefunden wird (Suchpfad).

Maa83 18. Sep 2008 15:56

Re: Linuxprogramm mit php aufrufen
 
laut Anleitung muss das Programm nicht installiert o.ä. werden.
wie kann ich überprüfen ob das Programm gefunden wird?
Steht doch im gleichen Verzeichnis.
Ich sehe es doch ;)

Das macht mich grad echt wahnsinnig :wall:

DeddyH 18. Sep 2008 15:59

Re: Linuxprogramm mit php aufrufen
 
Wenn es im selben Pfad steht, muss es aber IMHO mit "./Programm" aufgerufen werden.

Maa83 18. Sep 2008 16:03

Re: Linuxprogramm mit php aufrufen
 
das ist nun mein Aufruf:

system("./mp3splt cat.mp3 0.10 0.20 -o out.mp3", $retval);

das steht in der Doku:

mp3splt album.mp3 54.32.19 67.32 -o out.mp3

Zeitenangaben sind folgendermaßen: minutes.seconds[.hundredths]

Meflin 18. Sep 2008 16:25

Re: Linuxprogramm mit php aufrufen
 
Ja, funktioniert das jetzt oder nicht :gruebel:

Maa83 18. Sep 2008 18:31

Re: Linuxprogramm mit php aufrufen
 
nein, leider nicht.

omata 18. Sep 2008 18:35

Re: Linuxprogramm mit php aufrufen
 
Ruf doch mal system("pwd", $retval); auf. Das zeigt dir, in welchem Verzeichnis du gerade bist.

Maa83 19. Sep 2008 07:14

Re: Linuxprogramm mit php aufrufen
 
ich bekomme das richtige Verzeichnis angezeigt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:48 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz