• 14.07.2025, 02:40
  • Registrieren
  • Anmelden
  • Sie sind nicht angemeldet.

 

mysterox

Senior Member

PHP: Datei Pfad wird nicht richtig übernommen

Donnerstag, 8. Februar 2007, 16:08

Hallo zusammen,

ich habe folgendes Problem, ich lese den Pfad einer Datei aus einer MySQL Datenbank.
Wenn ich den überarbeiteten Pfad aber dann an ein Programm übergeben schneidet er immer ein Stück ab!

Beispiel:
Das hier ist der Pfad, den ich aus der DB habe und überarbeitet habe
/data/3\ Doors\ Down/\[1999\]\ -\ The\ Better\ Life/01\ -\ Kryptonite.mp3

Wenn ich nun folgendes ausführe, läuft alles wunderbar und ih höre musik!

echo system("/usr/bin/mpg321 -o alsa -g 100 /data/3\ Doors\ Down/\[1999\]\ -\ The\ Better\ Life/01\ -\ Kryptonite.mp3");

Wenn ich den Pfad zuvor in eine Variable schreibe geht es auch noch:

echo $lied_pfad = "/data/3\ Doors\ Down/\[1999\]\ -\ The\ Better\ Life/01\ -\ Kryptonite.mp3";

echo system("/usr/bin/mpg321 -o alsa -g 100 $lied_pfad");

Aber es geht immer nur so lange wie der Pfad wirklich hart codiert im Skript drin steht.

Sobald ich das wirklich 100% dynamisch mache, den Pfad aus der DB holen, den Pfad überarbeiten und dann die Variable wie an den Player übergebe, bekomme ich folgende Meldung:

High Performance MPEG 1.0/2.0/2.5 Audio Player for Layer 1, 2, and 3.
Version 0.59q (2002/03/23). Written and copyrights by Joe Drew.
Uses code from various people. See 'README' for more!
THIS SOFTWARE COMES WITH ABSOLUTELY NO WARRANTY! USE AT YOUR OWN RISK!
: No such file or directory The Better Life/01 - Kryptonite.mp3

Er schneidet davorne quasi ziemlich viel ab!

Hat jemand ne Ahnung warum, oder wo dran das liegen könnte?
Ich habe alle "Sonderzeichen" im Pfad "ecaped" also daran kann es nicht liegen!

Rechte sind auch alle vollkommen in ordnung!

Bin echt für jede Hilfe Dankbar.

mfg

Mysterox

Eikman

Moderator

Re: PHP: Datei Pfad wird nicht richtig übernommen

Donnerstag, 8. Februar 2007, 16:44

Lass den Pfad hart kodiert drin und hol ihn aus der Datenbank und dann gibst du die direkt untereinander aus.

Y0Gi

God

Re: PHP: Datei Pfad wird nicht richtig übernommen

Donnerstag, 8. Februar 2007, 17:04

Hast du dir den fertigen Pfad einfach mal ausgeben lassen und dann manuell probiert? Ist der auch als Parameter wirklich gut genug maskiert?

mysterox

Senior Member

Re: PHP: Datei Pfad wird nicht richtig übernommen

Donnerstag, 8. Februar 2007, 17:12

Hi,

wenn ich den Pfad aus der DB raushole, maskiere und ihn dann ausgeben lasse, wird er 100% korrekt angezeigt!

Wenn ich ihn dann markiere und per hand im terminal starte geht alles wunderbar, nur wenn der irgendwie direkt aus der DB kommt und maskiert wird, geht es nicht!

mfg

Mysterox

Y0Gi

God

Re: PHP: Datei Pfad wird nicht richtig übernommen

Donnerstag, 8. Februar 2007, 17:26

Hm. Eine weitere Option ist es, einen Wrapper zu verwenden. Für mpg123 habe ich auf die schnelle nichts gefunden, aber für XMMS gibt es u.a. das Paket pyxmms, über das sich eine Datei wie folgt in die Playlist von XMMS einfügen und abspielen lässt:

Quellcode

1
python -c "import xmms; xmms.control.enqueue_and_play([$FILENAME])

Könnte klappen. Schöner wäre natürlich im Script, dass die Daten aus der DB holt. Für PHP gibt es so ein Paket für XMMS aber meines Wissens nicht.

Clark

God

Re: PHP: Datei Pfad wird nicht richtig übernommen

Freitag, 9. Februar 2007, 03:17

hmmm, wie schaut denn der String aus, den du von mysql zurückbekomsmt?
vielleicht ist der jha schon kaputt...
c++: The power, elegance and simplicity of a hand grenade.

Clark

God

Re: PHP: Datei Pfad wird nicht richtig übernommen

Freitag, 9. Februar 2007, 03:20

Zitat von »Y0Gi«

Hm. Eine weitere Option ist es, einen Wrapper zu verwenden. Für mpg123 habe ich auf die schnelle nichts gefunden, aber für XMMS gibt es u.a. das Paket pyxmms, über das sich eine Datei wie folgt in die Playlist von XMMS einfügen und abspielen lässt:

Quellcode

1
python -c "import xmms; xmms.control.enqueue_and_play([$FILENAME])

Könnte klappen. Schöner wäre natürlich im Script, dass die Daten aus der DB holt. Für PHP gibt es so ein Paket für XMMS aber meines Wissens nicht.

du willst nicht wirklich xmms verwenden, oder?

Ne Empfehlung: Kein Xmms verwenden, da sind massig nicht gefixte Bugs drin, die teilweise sogar schwerwiegend sind :(
c++: The power, elegance and simplicity of a hand grenade.

Y0Gi

God

Re: PHP: Datei Pfad wird nicht richtig übernommen

Freitag, 9. Februar 2007, 11:27

Ich persönlich verwende auch kein XMMS, es war ja nur ein Beispiel, für das mir Bindings bekannt sind.

mysterox

Senior Member

Re: PHP: Datei Pfad wird nicht richtig übernommen

Freitag, 9. Februar 2007, 15:27

Hi,

nein ich verwende mpg123 bzw mpg321, muss ja ein player für die konsole sein, der auch ohne Gui läuft wenn er vom Webserver aufgerufen wird!

Also der String in der DB ist 100% in Ordnung!
Ich habe den jetzt schon in eine txt Datei geschrieben und diese dann als Playliste übergeben, aber da kommt die gleiche Meldung!

Also in der DB ist folgendes gespeichert:
/data/3 Doors Down/[1999] - The Better Life/01 - Kryptonite.mp3

Ist echt zum kotzen!

Unter Suse 9.2 lief das ohne Probleme, dann mein Auftrag geber am System herum gespielt und versucht auf 10.1 upzudaten, das ist natürlich voll in die hose gegangen naja und jetzt hat der irgendwer Ubuntu drauf installiert!
Was micht eigentlich super freut, da ich selber auch immer Ubuntu einsetze, aber das ist echt mal kacke das das nicht mehr funzt, weil der depp nicht die finger davon lassen kann!

mfg

Myst

Y0Gi

God

Re: PHP: Datei Pfad wird nicht richtig übernommen

Freitag, 9. Februar 2007, 15:29

Und wenn du einfach mal schilderst, was genau deine Anwendung effektiv machen soll? Also hier. Vielleicht finden sich da alternative Wege.

mysterox

Senior Member

Re: PHP: Datei Pfad wird nicht richtig übernommen

Freitag, 9. Februar 2007, 15:52

Hi,

ok dann versuch ich es mal zu erklären!

Der Kunder(Bestattungshaus) verwaltet seine MP3´s mit Itunes.
Mit itunes werden dann Playlisten für die einzelen bestattungen erstellt und dann als txt auf dem server gespeichert!

So und da das alles fernbedienbar sein soll, sollte das mit PHP laufen.
So das der Pfarrer in der Kapelle mit nem Pda auf dem Pult stehen kann und dann einfach nur auf ein lied klicken muss und es erklinkt.

Ich weiss, ist etwas komisch, aber ich habe nur programmiert, war nicht meine idee, das so zu lösen!
Und an dieser lösung wird nach wie vor noch festgehalten und es MUSS so gemacht werden!

Naja und die DB gibt es deswegen, weil es quasi zwei Gui´s gibt, das eine ist quasi der Player der nur abspielt und das andere ist ein lautstärke regeler, damit kann man sich die mp3´s probe hören und dann die lautstärle einstellen und in der db speichern!

mfg

Mysterox

Y0Gi

God

Re: PHP: Datei Pfad wird nicht richtig übernommen

Freitag, 9. Februar 2007, 16:00

Also benutzt der Pfarrer einen PDA um einen Server über ein Web-Frontend in PHP fernzusteuern? Und auf dem Server liegen auch die MP3s und werden dort abgespielt?

mysterox

Senior Member

Re: PHP: Datei Pfad wird nicht richtig übernommen

Freitag, 9. Februar 2007, 16:10

Ja genau so ist es!

Ich weiss, dass das eigentlich ein absolute NO-GO ist sachen auf dem Server auszuführen, aber es ist halt auch nur ein firmennetzwerk bei dem es nur das WLAN gibt für die verbindung zwischen PDA und Server, ist auch verschlüsselt und alles.

Was aber auch nicht meine Aufgabe und Problem war/ist.

Der Server ist ein P4 3 GHz mit 1 GB RAM, der nur für die MP3´s, den Web-Server und den PHP-Player zuständig ist, von daher belastet das auch keine anderen Benutzer.

Aber ich bin genau so wenig davon begeistert sachen auf dem Server selber auszuführen wie du!
Aber ich habe denen die nachteile genannt und die wollten das so haben!

crushcoder

God

Re: PHP: Datei Pfad wird nicht richtig übernommen

Freitag, 9. Februar 2007, 16:32

3 doors down bei einer beerdigung...

das erst was mir auffällt ist das der dateiname als parameter leerzeichen enthält, aber wenn mpg321 das schluckt ist es ja ok.

wenn ich mir: http://de3.php.net/manual/de/function.system.php durchlese fallen mir aber noch andere fallstricke auf.

was gibt denn mpg321 aus wenn du einen ganzen pfad übergibst auf ein nicht vorhandenes file?
weil die ausgabe "No such file or directory The Better Life/01 - Kryptonite.mp3" könnte ja auch durch das programm abgeschnitten sein, nicht weil der parameter schon gekürzt ist.

außerdem könntest du erstmal den befehl als string zusammen setzen und diesen ausgeben lassen, also:

echo $lied_pfad = "/data/3\ Doors\ Down/\[1999\]\ -\ The\ Better\ Life/01\ -\ Kryptonite.mp3";
echo $befehl = "/usr/bin/mpg321 -o alsa -g 100 \"${lied_pfad}\"";
echo system($befehl);

vielleicht sieht man dann ja einen unterschied zw. hartkodiert und dynamisch.
Gott hat die Welt ja nur in sieben Tagen erschaffen können, weil es keine installierte Basis gab.

hurra

God

Re: PHP: Datei Pfad wird nicht richtig übernommen

Freitag, 9. Februar 2007, 16:45

Zitat von »crushcoder«

\ -\ The\ Better\ Life/01\ -\ Kryptonite.mp3";
echo $befehl = "/usr/bin/mpg321 -o alsa -g 100 \"${lied_pfad}\"";
echo system($befehl);



Wenn du $lied_pfad eh schon in " setzt, musst du da eigentlich bis auf " auch nichts mehr maskieren, oder?

crushcoder

God

Re: PHP: Datei Pfad wird nicht richtig übernommen

Freitag, 9. Februar 2007, 17:03

stimmt, das ist doppelt gemoppelt.
könnte man mal mit maskierung, und einmal mit " versuchen, vielleicht klappts dann ja.
Gott hat die Welt ja nur in sieben Tagen erschaffen können, weil es keine installierte Basis gab.

mysterox

Senior Member

Re: PHP: Datei Pfad wird nicht richtig übernommen

Freitag, 9. Februar 2007, 18:29

Hi,

also ich habe den pfad nur als string mit " hardcodiert im script stehen!
Daher weiss ich ja das es eigentlich funzt!

Naja und 3 doors down ist halt einfach musik von mir zum testen!
Nach 3 stunden vor ort und immer so was wie candle in the wind, brauchte ich halt eigene musik ;-)

@crushcorder

Wenn ich dsa so mache wie du schreibst dann läuft es ja.
So bald ich den Pfad so wie ich ihn hier gepostet habe, hardcodiert im script verwende geht alles!

Aber wenn ich das alles aus der db hole und dann noch escape geht es nicht mehr!

Und ich schreibe auch den maskierten Pfad in die Variable.

Eikman

Moderator

Re: PHP: Datei Pfad wird nicht richtig übernommen

Freitag, 9. Februar 2007, 18:52

dann escape es nicht, sondern setz es einfach in anführungszeichen

mysterox

Senior Member

Re: PHP: Datei Pfad wird nicht richtig übernommen

Freitag, 9. Februar 2007, 19:13

nur anführungszeichen gehen leider auch nicht!

crushcoder

God

Re: PHP: Datei Pfad wird nicht richtig übernommen

Freitag, 9. Februar 2007, 19:39

ich meinte nur das du dann nicht nur den pfad vergleichen kannst, sondern den ganzen befehl.

irgendwo muss ja ein unterschied entstehen.

zb könnte das der pfad aus der datenbank ein anderes encoding haben und man sieht zb ein zeichen garnicht wenn man es sich einfach ausgeben lässt.
vielleicht auch mal die länge des pfads ausgeben lassen usw.

oder du läßt das mal mit einen debugger durchlaufen, dann sind möglichst kleine schritte auch nützlich.
Gott hat die Welt ja nur in sieben Tagen erschaffen können, weil es keine installierte Basis gab.