PHP Script das Dateien sucht

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
gnude
Beiträge: 1569
Registriert: 14.09.2009 22:05:28
Kontaktdaten:

PHP Script das Dateien sucht

Beitrag von gnude » 03.12.2009 11:09:12

hallo
ich brauche ein PHP Script, das auf dem Webserver eine Datei sucht und diese dann auf dem Client im Medienplayer öffnet.
Die gesuchte Datei befindet sich aber nicht im /var/www Verzeichnis, sondern woanders in /var/
Es währe optimal, wenn man ein kleine Webseite hat, die man im Browser aufruft, dort einfach den Namen der Datei eingibt und diese dann auf dem Client im Medienplayer geöffnet wird.

Hat jemand eine Idee?

Benutzeravatar
Meillo
Moderator
Beiträge: 9254
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: PHP Script das Dateien sucht

Beitrag von Meillo » 03.12.2009 11:48:44

gnude hat geschrieben:Die gesuchte Datei befindet sich aber nicht im /var/www Verzeichnis, sondern woanders in /var/
Dann darf der Webserver nicht in einer chroot laufen. Das zuerst prüfen.
Es währe optimal, wenn man ein kleine Webseite hat, die man im Browser aufruft, dort einfach den Namen der Datei eingibt und diese dann auf dem Client im Medienplayer geöffnet wird.
Du kannst einen entsprechenden Content-Type senden und dann die Datei einfach cat'en. Das sollte funktionieren.
Use ed once in a while!

Benutzeravatar
gnude
Beiträge: 1569
Registriert: 14.09.2009 22:05:28
Kontaktdaten:

Re: PHP Script das Dateien sucht

Beitrag von gnude » 03.12.2009 13:29:45

hmm
wie kann ich das prüfen?
ich hab jetzt nen dateimanager script gefunden, das zeigt mir auch schon die dateien an in dem verzeichnis,
aber... die suche oder zugriff funktioniert nicht. scheint ein problem mit den berechtigungen zu sein. ich weiss aber noch nicht genau, welches...ich suche noch.
kann ich das verzeichnis nicht verlinken in ein unterverzeichnis nach www ????
mit ln /var/spool/dateien/ /var/www/dateien
bin ich nicht erfolgreich gewesen....

Benutzeravatar
Meillo
Moderator
Beiträge: 9254
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: PHP Script das Dateien sucht

Beitrag von Meillo » 03.12.2009 14:37:05

gnude hat geschrieben:aber... die suche oder zugriff funktioniert nicht. scheint ein problem mit den berechtigungen zu sein. ich weiss aber noch nicht genau, welches...ich suche noch.
Die Dateien müssen für den User www-data (vermutlich) lesbar sein (und er muss Berechtigungen im Pfad bis dorthin haben).
kann ich das verzeichnis nicht verlinken in ein unterverzeichnis nach www ????
mit ln /var/spool/dateien/ /var/www/dateien
Mit Hardlinks, ja. Dann ist auch das Thema chroot kein Problem mehr.
Use ed once in a while!

Benutzeravatar
gnude
Beiträge: 1569
Registriert: 14.09.2009 22:05:28
Kontaktdaten:

Re: PHP Script das Dateien sucht

Beitrag von gnude » 03.12.2009 15:26:57

wie kann ich denn vernünftig nen hardlink darauf setzten???
die dateien liegen jetzt im folgenden verzeichnis:
/var/spool/asterisk/monitorarchive
und der websever läuft hier:
/var/www
wie bekomm ich das verzeichnis korrekt verlinkt?

Benutzeravatar
Meillo
Moderator
Beiträge: 9254
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: PHP Script das Dateien sucht

Beitrag von Meillo » 03.12.2009 18:03:31

gnude hat geschrieben:wie bekomm ich das verzeichnis korrekt verlinkt?
Wie du oben schon selbst (mit anderen Pfaden) geschrieben hast:

Code: Alles auswählen

ln /var/spool/asterisk/monitorarchive /var/www/monitorarchive
Wenn $file dein Pfad zur Datei ist, kannst du die Datei folgendermaßen übermitteln:

Code: Alles auswählen

printf "Content-Type: "
file -ib "$file"
echo
cat "$file"
So in einem Shellscript, du musst es halt nach PHP übertragen.
Use ed once in a while!

Benutzeravatar
gnude
Beiträge: 1569
Registriert: 14.09.2009 22:05:28
Kontaktdaten:

Re: PHP Script das Dateien sucht

Beitrag von gnude » 06.12.2009 00:31:41

gibt es nicht auch eine php only lösung?

Benutzeravatar
Meillo
Moderator
Beiträge: 9254
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: PHP Script das Dateien sucht

Beitrag von Meillo » 06.12.2009 10:55:52

gnude hat geschrieben:gibt es nicht auch eine php only lösung?
Doch, du musst die entsprechenden Befehle halt in PHP schreiben. AFAIK sollte das möglich sein. Mein Shellscript sollte nur verdeutlichen *was* getan werden muss, nicht *wie*.

Wie du das umsetzst, ist erstmal deine Aufgabe. Ich kann zwar PHP, habe aber, verständlicherweise, nicht viel Lust den Code für dich zu schreiben oder groß im Web zu recherchieren. Wenn du Code lieferst, dann schaue ich jedoch gerne drüber und helfe zu verbessern und Fehler zu korrigieren.

Mein Vorschlag:
- Konzentriere dich zuerst auf die Inhalte *eines* Ordners. Also keine Suche durch einen Verzeichnisbaum, sondern nur über die Dateien eines Ordners. (Erweitern kannst du später noch.) Die entscheidenen Funktionen waren AFAIR: opendir(), readdir(), etc.
- Wenn das funktioniert, schaue wie du den Content-Type der Datei herausfindest (das was `file -ib' in der Shell macht). Falls der Content-Type immer der gleiche ist, kannst du ihn (erstmal) auch fest rein kodieren.
- Wenn das geht, gebe die Datei entsprechend aus: Content-Type-Zeile, Leerzeile, Dateiinhalt. (Näheres findest du in Beschreibungen zu CGI.)
Use ed once in a while!

Benutzeravatar
gnude
Beiträge: 1569
Registriert: 14.09.2009 22:05:28
Kontaktdaten:

Re: PHP Script das Dateien sucht

Beitrag von gnude » 08.12.2009 12:30:16

hmm
kurzes script:

Code: Alles auswählen

if ($dir = @opendir("/tmp")) {
 while ($file = readdir($dir)) {
  echo "$file\n";
  }
 closedir($dir);
}
liest das verzeichnis aus.
jetzt müsste ich nur... nach einen teil des dateinames filtern und den pfad mit ausgeben...

Benutzeravatar
gnude
Beiträge: 1569
Registriert: 14.09.2009 22:05:28
Kontaktdaten:

Re: PHP Script das Dateien sucht

Beitrag von gnude » 08.12.2009 13:06:29

hallo
folgendes script soll in einem festen verzeichnis alle dateien anzeigen, wo die nummer "23" im dateinamen drin vorkommt.
aber...
er zeigt was an, aber der erzeugte link ist nicht anklickbar...

Code: Alles auswählen

<?php
$verzeichnis = openDir("/var/spool/asterisk/monitorarchive/61");
while ($file = readDir($verzeichnis)) {
 if ($file != "." && $file != "..") {
  if (strstr($file, "23")) {
   $name = explode(".", $file);
   echo "<a href=\var\spool\asterisk\monitorarchive\61\">$name[0]</a><br>\n";
  }
 }
}
closeDir($verzeichnis); 
?> 

fehlermeldung:
The requested URL /\var\spool\asterisk\monitorarchive1" was not found on this server.

tafkad
Beiträge: 282
Registriert: 22.09.2004 13:54:26

Re: PHP Script das Dateien sucht

Beitrag von tafkad » 08.12.2009 13:50:24

gnude hat geschrieben:hallo
folgendes script soll in einem festen verzeichnis alle dateien anzeigen, wo die nummer "23" im dateinamen drin vorkommt.
aber...
er zeigt was an, aber der erzeugte link ist nicht anklickbar...

Code: Alles auswählen

<?php
$verzeichnis = openDir("/var/spool/asterisk/monitorarchive/61");
while ($file = readDir($verzeichnis)) {
 if ($file != "." && $file != "..") {
  if (strstr($file, "23")) {
   $name = explode(".", $file);
   echo "<a href=\var\spool\asterisk\monitorarchive\61\">$name[0]</a><br>\n";
  }
 }
}
closeDir($verzeichnis); 
?> 

fehlermeldung:
The requested URL /\var\spool\asterisk\monitorarchive1" was not found on this server.
Ist ne ernst gemeinte Frage, hast Du überhaupt Ahnung was Du da in dem Script tust?

Also ein <a href=\var\spool\asterisk\monitorarchive\61\">$name[0]</a> kann Dir niemals den Pfad richtig liefern, ausser Du bist selbst auf dem Server drauf und hast als Benutzer leserechte.

Um auf die Datei zuzugreifen müste diese für den Webserver verfügbar sein, was Sie derzeit immer noch nicht ist, zumindest wenn Du dein script so nutzt. Dafür entweder das Verzeichniss entsprechend Hard linken und die URL passend zusammen bauen, oder das ganze über einen Alias im Apachen machen und dann die URL richtig zusammen bauen.

Benutzeravatar
Meillo
Moderator
Beiträge: 9254
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: PHP Script das Dateien sucht

Beitrag von Meillo » 08.12.2009 14:01:28

tafkad hat geschrieben:Also ein <a href=\var\spool\asterisk\monitorarchive\61\">$name[0]</a> kann Dir niemals den Pfad richtig liefern, ausser Du bist selbst auf dem Server drauf und hast als Benutzer leserechte.
Der HTML-Code ist natürlich unsinnig. Doch für das eigentliche Problem ist dieser Pfad schon das was gebraucht wird.
Um auf die Datei zuzugreifen müste diese für den Webserver verfügbar sein, was Sie derzeit immer noch nicht ist, zumindest wenn Du dein script so nutzt. Dafür entweder das Verzeichniss entsprechend Hard linken und die URL passend zusammen bauen, oder das ganze über einen Alias im Apachen machen und dann die URL richtig zusammen bauen.
Oder meinen Lösungsansatz verwenden, was vermutlich einfacher ist.
Use ed once in a while!

Benutzeravatar
gnude
Beiträge: 1569
Registriert: 14.09.2009 22:05:28
Kontaktdaten:

Re: PHP Script das Dateien sucht

Beitrag von gnude » 08.12.2009 14:28:11

der webserver steht um die ecke un dist im lokalen intranet.
ich habe root zugriff darauf.

Benutzeravatar
gnude
Beiträge: 1569
Registriert: 14.09.2009 22:05:28
Kontaktdaten:

Re: PHP Script das Dateien sucht

Beitrag von gnude » 08.12.2009 16:15:05

ich hab noch dieses script gefunden.
das macht aber gar nix. soll aber ein aktuelles verzeichnis nach dateinamen durchsuchen und diese dann ausgeben....

Code: Alles auswählen


<?php

if($action=="look")
{
such();
}
if($action=="search")
{
such();
echo "<hr>";
$dat="ordner";
$file=opendir($dat);
while($datei=readdir($file))
{
   $temp=$datei;
   $temp=substr($datei,strlen($datei)-strlen($fe),strlen($datei)-1);

   if($temp==$fe)
   {
   $sz=filesize($datei) / 1024;
   $erg=$erg."<br>".$datei." (".$sz." KB)";
   }
}
if($erg=="") { $erg="Keine *.$fe Dateien gefunden.";}
echo $erg;
}

function such()
{
echo "<form method=post action=$PHP_SELF>";
echo "Nach welchem Dateityp soll gesucht werden <br>(Bsp.: mp3, doc, exe, bat ... etc) :<br>";
echo "<input size=30 name=\"fe\"><br>";
echo "<input type=submit value=\"search\">";
echo "<input type=hidden name=\"action\" value=\"search\">";
echo "</form>";
}

?>

Benutzeravatar
Meillo
Moderator
Beiträge: 9254
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: PHP Script das Dateien sucht

Beitrag von Meillo » 08.12.2009 17:06:51

Mal 'ne grundsätzliche Frage: Kannst du überhaupt PHP?

Wenn nein, dann heißt das wohl, dass dir jemand das Programmieren soll. Das sollte dann aber klar werden.

Wenn ja, dann frage ich mich, warum du nicht einfach die Bausteine nimmst du dir was passendes zusammenbastelst.

Der Thread dümpelt so vor sich hin aber es geht nicht vorwärts ... und das liegt nicht an der grundsätzlichen Hilfsbereitschaft der Community. Wo hapert's denn (bei dir)?
Use ed once in a while!

Benutzeravatar
gnude
Beiträge: 1569
Registriert: 14.09.2009 22:05:28
Kontaktdaten:

Re: PHP Script das Dateien sucht

Beitrag von gnude » 08.12.2009 23:03:54

nein
ich kann kein php.

Benutzeravatar
Meillo
Moderator
Beiträge: 9254
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: PHP Script das Dateien sucht

Beitrag von Meillo » 09.12.2009 10:00:25

gnude hat geschrieben:nein
ich kann kein php.
Das ändert natürlich die Art der Anfrage: Gesucht ist also ein *fertiges* Script das das Problem löst.

Erste Ansätze gibt's ja schon. Wäre schön, wenn jemand die Teile zusammenfügt.

Freiwillige vor. Es gibt auch ein großes Danke dafür. :-D
Use ed once in a while!

Benutzeravatar
gnude
Beiträge: 1569
Registriert: 14.09.2009 22:05:28
Kontaktdaten:

Re: PHP Script das Dateien sucht

Beitrag von gnude » 09.12.2009 12:31:53

hi
danke schonmal....
das interesse php zu lernen ist natürlich vorhanden.

jetzt hab ich hier ein php buch liegen, und sehe dort, das es einen shell_exec befehlt gibt.
man könnte diesem ja ganz unkonventionell einfach einen suchstring übergeben:
gesuchte_datei = shell_exec("find -name *bla*);
damit hätten wir doch in der variable gesuchte_datei das suchergebnis. das müsste man dann nur noch als darstellbaren link umwandeln?

Benutzeravatar
Meillo
Moderator
Beiträge: 9254
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: PHP Script das Dateien sucht

Beitrag von Meillo » 09.12.2009 14:58:52

gnude hat geschrieben:jetzt hab ich hier ein php buch liegen, und sehe dort, das es einen shell_exec befehlt gibt.
man könnte diesem ja ganz unkonventionell einfach einen suchstring übergeben:
gesuchte_datei = shell_exec("find -name *bla*);
damit hätten wir doch in der variable gesuchte_datei das suchergebnis.
Seht da was für Save-Mode (oder wie das heißt). Evtl. ist der Befehl nämlich inaktiv. Das hat auch gute Gründe, denn vielleicht schreibst du sowas wie

Code: Alles auswählen

shell_exec("find -name *$string*");
Und wenn du dann zuvor nicht sehr sorgfältig alle Möglichkeiten $string zu verändern kontrollierst und ggf. Validitätsprüfungen einbaust, dann ruft jemand vielleicht mal sowas auf:

Code: Alles auswählen

http://example.com/script.php?string=;rm%20
Und schon hast du ein großes Problem.

Also lieber mit PHP-Code (von Hand) die relevanten Verzeichnisse durchgehen und nach der Datei suchen. Das sollte auch nicht das große Problem sein.
das müsste man dann nur noch als darstellbaren link umwandeln?
Das eben ist der Punkt. Alles was oberhalb von DOCUMENT_ROOT (meist /var/www) liegt kann grundsätzlich *nicht* als Link in HTML dargestellt werden. Du musst die Datei entweder mit einem Hardlink nach irgendwo unter DOCUMENT_ROOT linken (gehen Softlinks auch?), oder du kopierst mit PHP die Datei durch.

Ich bin stark für zweitere Variante. Schau dir mal [0] an, das erste Beispiel zeigt wie die Datenübertragung läuft.

[0] http://de3.php.net/manual/en/function.readfile.php
Use ed once in a while!

Benutzeravatar
gnude
Beiträge: 1569
Registriert: 14.09.2009 22:05:28
Kontaktdaten:

Re: PHP Script das Dateien sucht

Beitrag von gnude » 10.12.2009 08:57:31

hallo,
ich habe folgendes tool gefunden, was 100% passt:
http://code.google.com/p/dsearchr/updates/list
wenn ich es im internet unter funpic.de hochlade und teste macht es genau das was ich will.
aber auf der iptam anlage, wo es laufen soll (mit debian 4.0, apache und php) macht es keine ausgabe.
php läuft dort aber.
was kann da fehlen, an welcher konfiguraton muss ich drehen???

Antworten