Kleines Php Problem

BomberJack

Erfahrenes Mitglied
Hi all,
also da ich nicht son erfahrener skripter bin hab ich schon bei dem folgenden leider mein problem :(

Also was ich erreichen möchte:
Eine Seite die alle vorhanden log datein anzeigt mit einem link das diese dann geöffnet wird und angezeigt wird.

Ich hab das ganze schon bissel probiert bloß entweder kann ich alle aufeinmal wiedergeben oder das mit dem link funktioniert nicht evtl. habt ihr ja einen ratschalg für mich parat wie ich das machen kann.

Hier der code:
PHP:
<?
function CheckExt($filename, $ext) {
$passed = FALSE;
$testExt = "\.".$ext."$";
if (eregi($testExt, $filename)) {
$passed = TRUE;
}
return $passed;
}

//Define an array of common extensions.
$exts = array("log","jpg$|\\.jpeg","png","bmp");

echo "<b>Images in this folder:</b>";
$dir = opendir("/home/cs1/hlds/cstrike/logs");
$files = readdir($dir);

while (false !== ($files = readdir($dir))) {
foreach ($exts as $value) {
if (CheckExt($files, $value)) {
echo "<a href=\"$files\">$files</a><br>\n";
//Hiermit hab ich versuch die datein auszulesen aber dann liest er leider nur alle aus 
$fp = fopen("/home/cs1/hlds/cstrike/logs/$files","r");
if ($fp)
{
while(!feof($fp))
{
$text = fgets($fp,500);
echo"$text";
}
fclose($fp);
}
//Ende des auslesens
$count++; //Keep track of the total number of files.
break; //No need to keep looping if we've got a match.
}
}

}
echo $count." image(s) found in this directory.\n";
echo "<a href=\"".$_SERVER["PHP_SELF"]."\">Refresh</a>\n";
//Be a good script and clean up after yourself...
closedir($dir);
?>

Das gibt immoment alle logdatein aus links sind vorhanden aber bei einem klick öffnet er leider die datei nicht...


Gruß
BomberJack
 
Hallo,

ein kleines Problem:

$files hat dann den Inhalt "/home/cs1/hlds/cstrike/logs/DATEINAME".
Wenn du das einfach in <a href=""> einfügst, dann kann dein Browser, die Datei nicht öffnen.
Also <a href="http://dein.server.tld/verzeichnis/$file">

Ich hoffe, dass dir das hilft.
 
naja die dateiein sind ja lokal auf dem server und laufen in einem ganz anderen prozess. wiegesagt wenn ich den main dir angebe bekomme ich alles sauber angezeigt das einzige problem ist bloß das er die datein nicht öffnen kann weil der ie die endung endung .log wohl nicht kennt die endung kann ich leider nicht verändern weil die automatisch generiert werden aber ich kann das doch bestimmt irgendwie so über php managen das php dafür sorgt das man den inhalt der datein angezeigt bekommt...

Please HELP :-(


Gruß
BomberJack
 
Ueberprüfe doch einfach mal was dir, readdir ausgibt:
$files = readdir($dir);
Dann wirst du sehen weshalb follgendes
$fp = fopen("/home/cs1/hlds/cstrike/logs/$files","r");
ziemlich sinnlos ist ;)
 
Das es nicht funktioniert hab ich schon festgestellt :-(
das war nur mein versuch die irgendwie zu öffnen was eigentlich auch geht mit fopen bloß hab ich das dann logischerweise auf der hauptseite in der eigentlich die links sind zum öffnen...

Das hauptproblem ist ja dies bei mir:

echo "<a href=\"$files\">$files</a><br>\n";

Dadurch wird der link ja erzeugt was an sich ja ok ist bloß das öffnen klappt ja leider nicht und am liebsten wäre es mir wenn er die datei dann auch auf der selben seite aufruft ohne das ich da immer eine neue seite brauche (wegen dem seitenlayout) die logfiles werden ja automatisch generiert deswegen ist das ein bischen blöde :(

Gruß
BomberJack


PS: Thx für die hilfe ich breuchte bloß mal einen ansatz wie ich vorgehen muß mein php wissen ist leider noch sehr begrennzt :(
 
Ahhh ok,
habe dich falsch verstanden.

Das File existiert, hat auch inhalt, du kannst es dennoch nicht lesen?

So wie es aussieht hast du kein Leserecht auf das File,
check das mal.
 
Das Grundproblem wird wohl sein, dass Dein Webserver nicht auf das Verzeichnis "home/cs1/hlds/cstrike/logs" zugreifen kann. Wenn Du Deinen Webserver selbst administrieren kannst, dann editiere die httpd.conf wiefolgt:
Füge einfach folgende Zeile in die Alias-Section hinzu (einfach in dem File nach "Alias" suchen) :

Alias /home/cs1/hlds/cstrike/logs/ "home/cs1/hlds/cstrike/logs/"

(Webserver neu starten)

Damit solltest Du dann auch in Deinem Script mittels
Code:
<a href="www.meinserver.de/home/cs1/hlds/cstrike/logs/log.log">Logfile</a>
auf die Files verweisen können.

EDIT: PHP kann auch auf Files zugreifen, die der Webserver nach außen hin nicht zur Verfügung stellen kann (und das ist auch gut so). Somit kannst Du zwar das Log-File auslesen, aber nicht über den Webserver drauf verweisen.

mfg, snuu
 
Zuletzt bearbeitet:
naja das blöde ist die "log" files um die es geht werden automatisch von einem gameserver erstellt ich möchte die nur gerne auslesen mit fopen kann ich sie ja auch auslesen bloß nicht über den link der erzeugt wird. :-(
Also glaube nicht so recht das es an den rechten liegt
1stens kann ich bei der logfile gernierung nicht die chomd rechte festlegen und das skript an sich hat ja volle rechte sonst würde ja fopen garnicht gehen :-)
 
Original geschrieben von BomberJack
naja das blöde ist die "log" files um die es geht werden automatisch von einem gameserver erstellt ich möchte die nur gerne auslesen mit fopen kann ich sie ja auch auslesen bloß nicht über den link der erzeugt wird. :-(
Also glaube nicht so recht das es an den rechten liegt
1stens kann ich bei der logfile gernierung nicht die chomd rechte festlegen und das skript an sich hat ja volle rechte sonst würde ja fopen garnicht gehen :-)

natürlich dafür gibt es die setgid möglichkeit bei unix dateirechten. Du kannst die das verzeichnis logs der gruppe cslogs übergeben, und deinen http Server der Gruppe cslogs zuweisen somit kannst du sicher sein das jener die Dateien lesen kann:
http://holyfly.de/index.php?go=zugriff3
 
Zurück