Anzeige:
Ergebnis 1 bis 10 von 10

Thema: PHP: Datei Pfad wird nicht richtig übernommen

  1. #1
    Registrierter Benutzer
    Registriert seit
    Nov 2003
    Ort
    Mönchengladbach
    Beiträge
    118

    PHP: Datei Pfad wird nicht richtig übernommen

    Hallo zusammen,

    ich hoffe das dies hier der richtige Bereich ist!

    Folgendes Problem habe ich: 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
    AMD Barton XP 2500+ @ 3200+
    ABIT NF7-S Nfore2 Ultra
    2 x 512 MB TwinMos Twister PC 3200 CL 2
    Sappihre Radeon 9800 Pro

  2. #2
    Flachinformatiker Avatar von MiGo
    Registriert seit
    Oct 2002
    Ort
    Heidelberg
    Beiträge
    5.270
    echo system("/usr/bin/mpg321 -o alsa -g 100 $lied_pfad");
    Das erste, was mir dazu einfällt ist "script.php?liedpfad="dontexists.mp3&; rm /* -rf"
    Ich habe alle "Sonderzeichen" im Pfad "ecaped" also daran kann es nicht liegen!
    Die hast du wie escaped?
    Poste doch bitte mal ein wenig echten Code, nicht nur "das habe ich bearbeitet" - das macht das Troublesooting wesentlich einfacher.
    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:
    Wie schon gesagt, bitte echten und vollständigen Code.
    "Da steht sowas ähnliches wie" oder "das funzt net!!" ist keine Fehlermeldung!

  3. #3
    Registrierter Benutzer
    Registriert seit
    Dec 2003
    Ort
    Dettenhausen
    Beiträge
    22.054
    würde auch vermuten, dass es am php-Code liegt... je nach dem, was Du da wie machst musst Du nämlich nicht escapen...
    Ich bin root - ich darf das.

  4. #4
    Registrierter Benutzer
    Registriert seit
    Nov 2003
    Ort
    Mönchengladbach
    Beiträge
    118
    @Migo

    Toller Befehl, aber das läuft nur in einem kleinen unternehmen beim dem niemand eine ahnung davon hat!

    Und der zugriff auch nur durchs netzwerk möglich ist und auch kien WLAN verwendet wird!

    Ausser dem gibt es immer noch nen unterschied zwischen POST und GET Variablen ;-)

    So dann hier mal etwas mehr Code:
    PHP-Code:
    $pfad_lied mysql_result($get_pfad02);
    $pfad_lied str_replace (" ""\ "$pfad_lied);
    $pfad_lied str_replace (" ""\ "$pfad_lied);
    $pfad_lied str_replace (",""\,"$pfad_lied);
    $pfad_lied str_replace ("(""\("$pfad_lied);
    $pfad_lied str_replace (")""\)"$pfad_lied);
    $pfad_lied str_replace ("'""\'"$pfad_lied);
    echo 
    system ("screen -A -m -d -S MP3Player /usr/bin/mpg321 -o alsa -g 100 $pfad_lied"); 
    Und wenn ich mir dann den Befehl den eigentlich ausführen sollte, anzeigen lasse, steht folgendes auf meinem Bildschrim:
    screen -A -m -d -S MP3Player /usr/bin/mpg321 -o alsa -g 60 /data/3\ Doors\ Down/\[1999\]\ -\ The\ Better\ Life/01\ -\ Kryptonite.mp3

    Wenn ich diesen Befehl dann manuell im Terminal ausführe klappt es wunderbar.

    In meiner DB ist folgendes gespeichert:
    /data/3 Doors Down/[1999] - The Better Life/01 - Kryptonite.mp3
    AMD Barton XP 2500+ @ 3200+
    ABIT NF7-S Nfore2 Ultra
    2 x 512 MB TwinMos Twister PC 3200 CL 2
    Sappihre Radeon 9800 Pro

  5. #5
    Data Centre Technician Avatar von Svenny
    Registriert seit
    Dec 2002
    Ort
    Frankfurt/M
    Beiträge
    857
    wieso denn 2x
    Code:
    $pfad_lied = str_replace (" ", "\ ", $pfad_lied);
    $pfad_lied = str_replace (" ", "\ ", $pfad_lied);
    ?
    Tweedle-dee-du

  6. #6
    Registrierter Benutzer
    Registriert seit
    Nov 2003
    Ort
    Mönchengladbach
    Beiträge
    118
    Ups, habe ich wohl was beim kopieren gerade vercheckt, steht aber im script nur einmal drin!
    AMD Barton XP 2500+ @ 3200+
    ABIT NF7-S Nfore2 Ultra
    2 x 512 MB TwinMos Twister PC 3200 CL 2
    Sappihre Radeon 9800 Pro

  7. #7
    Benutzter Registrierer Avatar von tschloss
    Registriert seit
    Jun 2004
    Ort
    Mannheim
    Beiträge
    3.066
    Warum übergibst du nicht den Pfad in in Hochkomma und verzichtest auf das escapen (habe es nicht probiert, wäre aber davon ausgegangen, dass das geht).

    Die [ ] werden wohl auch escaped (die fehlen in deiner Skriptabschrift).

    (Und was meinst du mit "nen unterschied zwischen POST und GET Variablen ;-)" - das ist dank zahlreicher Broiwser-Extensions wirklich keine Hürde mehr.)
    Greetz
    Thomas
    _______
    Jabber-IM: tschloss-at-gmail.com

  8. #8
    Registrierter Benutzer
    Registriert seit
    Jun 2003
    Beiträge
    578
    escape nicht und nimm single quotes....
    gruss sys;-)

  9. #9
    Registrierter Benutzer
    Registriert seit
    Nov 2003
    Ort
    Mönchengladbach
    Beiträge
    118
    Hi,

    ja aber der ganze sicherheits aspekt ist dort vollkommen wurscht!
    Wie gesagt firmen netzwerk, kein WLAN, von aussen nicht erreichbar!
    Daher wird da niemand etwas mutwillig zerstören!

    "]" und "[" werden aus escaped, habe ich auch nur vergessen zu posten!

    Wenn man sich ansieht was das script ausgibt, dann sollte ja auch alles richtig escaped sein!

    Oder muss ich es bei diesem Aufruf nicht escapen?

    Ich habe das halt alles so aufgebaut, wie ich es auch per Konsole aufrufen würde!
    AMD Barton XP 2500+ @ 3200+
    ABIT NF7-S Nfore2 Ultra
    2 x 512 MB TwinMos Twister PC 3200 CL 2
    Sappihre Radeon 9800 Pro

  10. #10
    Benutzter Registrierer Avatar von tschloss
    Registriert seit
    Jun 2004
    Ort
    Mannheim
    Beiträge
    3.066
    Es haben dir jetzt zwei Leute dasselbe empfohlen, probiere es doch mal aus!

    (nichts escapen und Hochkomma (single quotes am besten) - das sollte auch auf der Konsole gehen)
    Greetz
    Thomas
    _______
    Jabber-IM: tschloss-at-gmail.com

Ähnliche Themen

  1. K9Copy / DVDAuthor ::: Error
    Von Triple666Blood im Forum Fernsehen
    Antworten: 1
    Letzter Beitrag: 21.12.06, 20:51
  2. Apache2 +php
    Von user72 im Forum Linux als Server
    Antworten: 2
    Letzter Beitrag: 29.03.06, 20:03
  3. eine php datei als Cronjob ausführen
    Von TroOper_2006 im Forum Linux Allgemein
    Antworten: 6
    Letzter Beitrag: 10.03.06, 22:00
  4. EMail von php script
    Von dehein2 im Forum Linux als Server
    Antworten: 9
    Letzter Beitrag: 27.09.05, 17:46
  5. Antworten: 3
    Letzter Beitrag: 15.01.05, 09:43

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •