Txt datei auslesen und ausgeben

Hi

Ich hab mir vor längerem ma was geschreiben das ich halt sehe welche ip auf welcher seite war, also ganz billig. Ich hab nun aber die logs nicht im „root“ verzeichnis ligen sondern ein ordner davor so das eig niemand die lesen kann. So nun mein Problem: speichern in die datei kann ich ja nun möchte ich diese log txt datei mit php auslesen und wieder geben lassen. geht das? eig müsste es doch funktionieren.

Das 2. Problem ist ich „generier“ den Namen der Datei automatisch für jeden Monat

$dateiname="../../log\_$monate[$monat]\_$jahr.txt";

wenn ich die log in ein unterverzeichnis des rootverzeichnis erstelle, dann kann ich mit

<?php $link = "/logs/log_".$monate[date("n")]."_".date("y").".txt"; ?>[Log - =$monate[date("n")]?\>](%3C?=%2524link?%3E)

auf die datei zugreifen, aber ich möchte die log nich im root verzeichnis haben. Und ich öffne ja dadurch die txt datei.
Ich wollt aber eine php datei schreiben in der dann drin steht
fopen $datei,r dann auslesen und wieder geben, aber genaueres weis ich leider noch nicht.

Hat jemand nen paar tipps wie ich voran kommen könnte?
Die Verzeichnisse sind zwar mit .htaccess geschützt aber wenns geht dann würd ich die Variante außerhalb des roots bevorzugen.

Danke für jede Hilfe!

MfG TObias

zum einen kannst Du fopen verwenden. einfacher ist es aber mit file(„filename.log“) zu arbeiten.
Du bekommst dann ein array dass Du in einer for schleife auslesen kannst - vergiss den Zeilenumbruch in html nicht.

was jetzt das zweite Problem ist versteh ich nicht so ganz…
Es ist egal wo die Datei liegt - Du musst sie halt nur richtig einlesen also mit „…/“ oder „./…/“ voranstellen…
htaccess hindert das einlesen der Datei dabei nicht…

wenn Du die Dateinamensliste generieren willst schau mal unter opendir() und readdir() nach.

HFH
Munich

ja danke es geht, muss nur noch ein bischen formatieren, danke!

Mein Problem besteht darin: ich lasse eine log erstellen und diese heißt dann immmer log_November_05.txt (log_Monat_Jahr.txt), dies möchte ich im script berücksichtigen so das jeden monat automatisch die aktuelle log genommen wird doch weis nicht wie ich es im php schreiben soll.

<?php $link = "../../logs/log_".$monate[date("n")]."_".date("y").".txt"; ?>

bringt immer ein fehler, leider.

Hab es so:

$link = „…/…/logs/log_“.$monate[date(„n“)]."_".date(„y“).".txt";
$lines = file ($link);

Ich denk das ist nicht korrekt, nur weis ich nicht was korrekt ist.
Tut mir leid.

MfG Tobias

versuchs mal so
$link = „…/…/logs/log_“.$monate[date(‚n‘)]."_".date(‚y‘).".txt";
$lines = file ($link);

$link =
„…/…/logs/log_“.$monate[date(‚n‘)]."_".date(‚y‘).".txt";
$lines = file ($link);

bekomm ich diese fehlermeldung … verzeweifel

Warning: file(): Unable to access …/…/logs/log__05.txt

(das mit dem access hab ich schon herraus gefunden: er erstellt eine datei diese hat haber nicht die rechte 777 sondern nur 644 und kann dadurch nicht angeschaut werden. Muss also auttomatisch auf 777 erstellt werden)

Aber er macht ja nich den Monat hin (log__05.txt) …

Hab auch versucht :

$monat = date(„n“);
$jahr = date(„y“);
$link = „…/…/logs/log_$monate[$monat]_$jahr.txt“;
$lines = file ($link);

Aber das selbe Problem

und $monate ist auch wirklich ein array (das mit dem Schlüssel 1 statt 0 beginnt)?

Warning: file(): Unable to access …/…/logs/log__05.txt

wo kein file - da kann auch nix geöffnet werden…

(das mit dem access hab ich schon herraus gefunden: er
erstellt eine datei diese hat haber nicht die rechte 777
sondern nur 644 und kann dadurch nicht angeschaut werden. Muss
also auttomatisch auf 777 erstellt werden)

gib dem erstellenden Script mal chmod 777
alternativ gibt es auch noch einen php Befehl namens chmod($file,$mode)

Hab auch versucht :

$monat = date(„n“);
$jahr = date(„y“);
$link = „…/…/logs/log_$monate[$monat]_$jahr.txt“;
$lines = file ($link);

Aber das selbe Problem

vllt ja auch nicht das richtige Verzeichnis? Vllt gehst Du ne ebene zu tief…?

Also:

Kann CHMOD der datei nicht ändern, weil ich wahrscheinlich nicht der ersteller bin. Ist aber egal, hab die Datei kopiert und ne 1 dran gehängt.

„log_November_051.txt“ - CHMOD 777

Hab es dann auf dem sicheren Weg probiert

$link = "../../log/logs/log\_November\_051.txt";
$lines = file ($link); 

klappt einwandfrei.

Versuch ich es wieder anders

$link = "../../log/logs/log\_".$monate[date('n')]."\_".date('y')."1.txt";




Warning: file(): Unable to access ../../log/logs/log\_\_051.txt

Der will irgendwie den Monat nicht „konvertieren“ oder so.
Mit allen Jahres usw. Variablen versuch, es klappt nicht.
Ist irgendeine besondere schreibweise verantwortlich, die ich nicht beachte oder ähnliches?

Danke für deine Hilfe, ich würd sonst noch vor ne Mauer rennen.

MfG Tobias

$link =
„…/…/log/logs/log_“.$monate[date(‚n‘)]."_".date(‚y‘).„1.txt“;

Warning: file(): Unable to access
…/…/log/logs/log__051.txt

Der will irgendwie den Monat nicht „konvertieren“ oder so.

Wo definierst Du denn das array $monate?
Ich hab das vorhin schon gefragt - und solange das array leer ist kann es auch nicht klappen…

mach mal
print_r($monate);
und poste hier das resultat.

So ich weis nicht warum ich es nicht gemacht habe, aber so sgeht es denke ich.

$monate = array(1=>„Januar“, 2=>„Feber“, 3=>„Maerz“, 4=>„April“, 5=>„Mai“, 6=>„Juni“, 7=>„Juli“, 8=>„August“, 9=>„September“, 10=>„Oktober“, 11=>„November“, 12=>„Dezember“);
$monat = date(‚n‘);
$jahr = date(‚y‘);

$link = „…/…/logs/log_$monate[$monat]_$jahr.txt“;
$lines = file ($link);

Nun hab ich nur noch das Problem mit dem öffnen, die datei wird automatisch angelegt, es kommt Warning: file(): Unable to access …/…/logs/log_November_05.txt auch wenn ich nun chmod auf 755 o. 777 setze kann ich nicht zugreifen.

Ich hab dies mal lokal auf meinem pc ausprobiert (apache 2.x) und es funktioniert aber warum dann nicht im internet?

Hat dies was mit der automatischen erstellung und vergabe von chmod zu tun?

Ich versteh es nicht

$link = "../../logs/log\_$monate[$monat]\_$jahr.txt";
$lines = file ($link);

foreach ($lines as $line\_num =\> $line) {
 echo " " . htmlspecialchars($line) . "
\n";
}

Ich bekomm :

Warning: file(): Unable to access ../../logs/log\_November\_05.txt in /srv/www/htdocs/xxx/html/btd/admin/log.php on line 15

Warning: file(../../logs/log\_November\_05.txt): failed to open stream: No such file or directory in /srv/www/htdocs/xxx/html/btd/admin/log.php on line 15

Warning: Invalid argument supplied for foreach() in /srv/www/htdocs/xxx/html/btd/admin/log.php on line 19

Geb ich es so ein, bekomm ich die gewünschte auflistung:

$link = "../../log/logs/log\_November\_05.txt";
$lines = file ($link);

so z.B. :

64.xx.xx.xx - - [01.11.2005 -- 04:07:32] "GET // HTTP/1.1" 

Warum klappt es wenn ich die datei eingebe und nicht mit den variablen?
Hast du vllt noch eine idee?

Danke

So hab es hinbekommen!

$datei=fopen($dateiname,"a");
chmod("$dateiname", 0777);
fputs($datei,"$eintragen\n");
fclose($datei);

Einfach chmod("$dateiname", 0777); dazwischen schreiben und schon wird bei einer automatisch erstellten datei 0777 gegeben.

Danke an alle die geholfen haben !

Danke