Wie kommen unterschiedliche Zeitstempel auf einem Ubuntu Server zustande?
Guten Morgen Community,
in Bezug auf Webserver bin ich noch in der Lernphase und komme bei einem Problem nicht weiter.
Es handelt sich um einen Ubuntu 8.04 LAMP-Server mit Apache2.
Meine Frage lässt sich in zwei Bereiche aufteilen:
1. Warum gibt es unterschiedliche Formate beim Zeitstempel?
Alle Dateien vor einem bestimmten Datum tragen einen Zeitstempel bestehend aus Datum und Jahr:
Füge ich Dateien hinzu (als FTP-User oder auch lokal als root), so tragen diese einen Zeitstempel bestehend aus Datum und Uhrzeit:
Hat jemand eine Erklärung dafür?
2. Warum stört sich der Webserver am Zeitstempelformat?
Dieser neue Zeitstempel sorgt für Probleme. Wenn ich als FTP-User eine Datei aktualisiere, dann kann der Webserver nicht auf diese zugreifen. Das führt dazu, dass die komplette Website nicht angezeigt wird und stattdessen eine Fehlermeldung kommt:
Nun könnte man meinen, das liege an falschen Zugriffsberechtigungen. Das ist aber nicht der Fall. Diese sind identisch und selbst ein Ändern mit "chmod 777" ändert nichts an dem Fehler. Die einzige Lösung ist, der aktualisierten Datei mit "touch -r" den Zeitstempel einer älteren Datei zu geben.
Ich kann mir nicht erklären, wieso sich der Webserver so am Zeitstempelformat stört. Weiß jemand Rat?
Viele Grüße
O.Marc
in Bezug auf Webserver bin ich noch in der Lernphase und komme bei einem Problem nicht weiter.
Es handelt sich um einen Ubuntu 8.04 LAMP-Server mit Apache2.
Meine Frage lässt sich in zwei Bereiche aufteilen:
1. Warum gibt es unterschiedliche Formate beim Zeitstempel?
Alle Dateien vor einem bestimmten Datum tragen einen Zeitstempel bestehend aus Datum und Jahr:
-rw-r--r-- 1 ftpuser psacln 27711 Apr 20 2011 lang_german_alt2.conf
Füge ich Dateien hinzu (als FTP-User oder auch lokal als root), so tragen diese einen Zeitstempel bestehend aus Datum und Uhrzeit:
-rw-r--r-- 1 ftpuser psacln 28924 Sep 15 12:13 lang_german_alt3.conf
Hat jemand eine Erklärung dafür?
2. Warum stört sich der Webserver am Zeitstempelformat?
Dieser neue Zeitstempel sorgt für Probleme. Wenn ich als FTP-User eine Datei aktualisiere, dann kann der Webserver nicht auf diese zugreifen. Das führt dazu, dass die komplette Website nicht angezeigt wird und stattdessen eine Fehlermeldung kommt:
Fatal error: Smarty error: unable to write to $compile_dir '/var/www/vhosts/url/httpdocs/templates_c'. Be sure $compile_dir is writable by the web server user. in /var/www/vhosts/url/httpdocs/includes/classes/Smarty_2.6.26/Smarty.class.php on line 1097
Nun könnte man meinen, das liege an falschen Zugriffsberechtigungen. Das ist aber nicht der Fall. Diese sind identisch und selbst ein Ändern mit "chmod 777" ändert nichts an dem Fehler. Die einzige Lösung ist, der aktualisierten Datei mit "touch -r" den Zeitstempel einer älteren Datei zu geben.
Ich kann mir nicht erklären, wieso sich der Webserver so am Zeitstempelformat stört. Weiß jemand Rat?
Viele Grüße
O.Marc
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 180201
Url: https://administrator.de/contentid/180201
Ausgedruckt am: 25.11.2024 um 23:11 Uhr
14 Kommentare
Neuester Kommentar
Moin moin,
Mit was erzeugst Du die obige Ausgabe? Ein
führt zu der Ausgabe von z.B.
I.d.R. ist die Ausgabe der zeitstempel davon abhängig, mit welchem Programm das ausgegeben wird und mit welchen Parametern dabei das Programm aufgerufen wurde.
lks
Mit was erzeugst Du die obige Ausgabe? Ein
ls -l
führt zu der Ausgabe von z.B.
drwxr-xr-x 2 xx xx 4096 2010-03-28 19:26 .wapi
drwxr-xr-x 3 xx xx 4096 2010-01-06 19:26 .webex
-rw------- 1 xx xx 134 2003-09-29 18:23 .weblink
drwxr-xr-x 4 xx xx 4096 2010-01-06 19:25 .weechat
-rw-r--r-- 1 xx xx 32 2006-10-07 15:45 .wgetrc
drwxr-xr-x 4 xx xx 4096 2012-01-24 07:33 .wine
I.d.R. ist die Ausgabe der zeitstempel davon abhängig, mit welchem Programm das ausgegeben wird und mit welchen Parametern dabei das Programm aufgerufen wurde.
lks
Interessant. , sollte trotzdem sowas wie bei mir herauskommen. liegt eventuell noch ein alias auf deinem ls?
Bei mir ist auf dem 8.04-erSystem folgende ls-version:
$ls --version
ls (GNU coreutils) 6.10
Copyright © 2008 Free Software Foundation, Inc.
Lizenz GPLv3+: GNU GPL Version 3 oder höher <http://gnu.org/licenses/gpl.html>
Dies ist freie Software: Sie können sie ändern und weitergeben.
Es gibt keinerlei Garantien, soweit wie es das Gesetz erlaubt.
Geschrieben von Richard Stallman und David MacKenzie.
und auf dem 10.04-er System
$ ls --version
ls (GNU coreutils) 7.4
Copyright © 2009 Free Software Foundation, Inc.
Lizenz GPLv3+: GNU GPL Version 3 oder höher <http://gnu.org/licenses/gpl.html>
Dies ist freie Software: Sie können sie ändern und weitergeben.
Es gibt keinerlei Garantien, soweit wie es das Gesetz erlaubt.
Geschrieben von Richard M. Stallman und David MacKenzie.
Die geben hier das volle Datum aus, auch mit "ls -la".
lks
versuch mal stat:
$ stat .bashrc
File: „.bashrc“
Size: 8328 Blocks: 24 IO Block: 4096 reguläre Datei
Device: fb01h/64257d Inode: 14861187 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ xx) Gid: ( 1000/ xx)
Access: 2012-02-08 00:22:47.000000000 +0100
Modify: 2012-02-04 13:39:06.000000000 +0100
Change: 2012-02-04 13:39:06.000000000 +0100
Zitat von @O-Marc:
Hier die Ausgaben:
Hier die Ausgaben:
File: `lang_german_alt2.conf'
> Size: 27711 Blocks: 56 IO Block: 4096 regular file
> Device: 803h/2051d Inode: 1691861 Links: 1
> Access: (0644/-rw-r--r--) Uid: (10003/ftpuser) Gid: ( 2524/ psacln)
> Access: 2012-02-03 03:25:23.000000000 +0100
> Modify: 2011-04-20 10:57:59.000000000 +0200
> Change: 2011-04-20 10:57:59.000000000 +0200
Diese Datei wurde am 20 April 2011, 10:57 erstellt und seitdem nicht mehr verändert.
Der letzte Zugriff auf die Datei erfolgte am 3. Februar dieses Hahres um 3:25.
File: `lang_german_alt3.conf'
> Size: 28924 Blocks: 64 IO Block: 4096 regular file
> Device: 803h/2051d Inode: 1689284 Links: 1
> Access: (0644/-rw-r--r--) Uid: (10003/ftpuser) Gid: ( 2524/ psacln)
> Access: 2012-02-03 03:25:23.000000000 +0100
> Modify: 2011-09-15 12:13:02.000000000 +0200
> Change: 2011-09-15 12:13:02.000000000 +0200
Diese Datei wurde am 15. September 2011 erstellt und seitdem nicht verändert. der letzte Zugriff erfolgte wie oben am 3. februar 2012.
Was für mich darauf folgt ist, daß Du irgendwo entweder einen alias für ls definiert hast oder eine entsprechende Umgebungsvariable gesetzt ist, die das Ausgabeformat für den Zeitstempel so umstellt, daß bei bei älteren Dateien das Jahr statt der Uhrzeit gezeigt wird.
Ich komm im Moment aber gerade nciht drauf, welcher Umstand diese andere Ausgabe bewirken könnte.
lks
Schau mal nach, wie LANG gesetzt ist. ggf noch die ganzen LC-Variablen prüfen (bei mir steht alles auf C).
Zitat von @O-Marc:
1. Warum gibt es unterschiedliche Formate beim Zeitstempel?
[...]
Hat jemand eine Erklärung dafür?
Damit du bei Dateien die NICHT älter als ein Jahr sind noch schnell erkennen kannst zu welcher Uhrzeit sie erstellt wurden.1. Warum gibt es unterschiedliche Formate beim Zeitstempel?
[...]
Hat jemand eine Erklärung dafür?
Wie es nun dazu kommt das es bei dem einem so gehandhabt wird und bei dem andren nicht weiß ich aber auch nicht...
Bei mir (Debian) wir der Timestamp also auch mal mit Jahr und mal mit Zeit ausgegeben
arano@lamp:~$ alias
alias ls='ls --color=auto'
arano@lamp:~$ ls --version
ls (GNU coreutils) 8.5
Copyright © 2010 Free Software Foundation, Inc.
Lizenz GPLv3+: GNU GPL Version 3 oder höher <http://gnu.org/licenses/gpl.html>
Dies ist freie Software: Sie können sie ändern und weitergeben.
Es gibt keinerlei Garantien, soweit wie es das Gesetz erlaubt.
Geschrieben von Richard M. Stallman und David MacKenzie.
arano@lamp:~$
arano@lamp:~$ ls --full-time
2. Warum stört sich der Webserver am Zeitstempelformat?
Nun könnte man meinen, das liege an falschen Zugriffsberechtigungen. Das ist aber nicht der Fall. Diese sind identisch und
selbst ein Ändern mit "chmod 777" ändert nichts an dem Fehler. Die einzige Lösung ist, der
aktualisierten Datei mit "touch -r" den Zeitstempel einer älteren Datei zu geben.
Bist du dir sicher das es an der DATEI liegt !?Fatal error: Smarty error: unable to write to $compile_dir '/var/www/vhosts/url/httpdocs/templates_c'. Be
> sure $compile_dir is writable by the web server user. in
> /var/www/vhosts/url/httpdocs/includes/classes/Smarty_2.6.26/Smarty.class.php on line 1097
Nun könnte man meinen, das liege an falschen Zugriffsberechtigungen. Das ist aber nicht der Fall. Diese sind identisch und
selbst ein Ändern mit "chmod 777" ändert nichts an dem Fehler. Die einzige Lösung ist, der
aktualisierten Datei mit "touch -r" den Zeitstempel einer älteren Datei zu geben.
Ich würde da eher auf das VERZEICHNIS ($compile_dir) tippen !
Alternative hier, schau doch mal in die error_logs vom Webserver und ggf. von PHP (wenn diese nicht eh an den Webserver umgeleitet werden...)
Davon mal abgesehen, es ist nicht der Webserver der sich daran stört, es ist die Templateengine SMARTY
~Arano
Moin moin
Hm... irgendwo muss es da ja eine Veränderung geben, also mach doch mal folgendes:
Während dessen in den Logs nach Fehlermeldungen Ausschau halten (ggf. PHP-Einstellungen ändern, loggin aktivieren, errorlevel hochschrauben,ect.)
Ich weiß zwar auchnciht ob das hilft und ob ich/wir da was finden... aber besser als raten, spekulieren und verdächtigen ist es alle mal
~Arano
EDIT:
Aber zuerst versuch mal den Vorschlag vom Lochkartenstanzer, das ist eine gute Idee !
HA und damit hätten wir auch das Verhalten von `ls` erklärt...
Das erklärt aber immer noch nicht, wieso ich das Problem mit "touch -r" lösen kann.
Das stimmt !Hm... irgendwo muss es da ja eine Veränderung geben, also mach doch mal folgendes:
- Sammle Informationen (chmod + timestamps) von Verzeichnis $compile_dir und der zu aktualisierenden Datei VOR dem Hochladen (also zu der Zeit als es noch funktioniert)
- Lade eine Datei hoch
- Sammle erneut die Informationen (jetzt wo es nicht mehr funktioniert)
- repariere wie gewohnt (touch -r)
- Sammle erneut die Informationen inklusive der von touch verwendeten Referenzdatei (jetzt wo es wieder läuft)
Während dessen in den Logs nach Fehlermeldungen Ausschau halten (ggf. PHP-Einstellungen ändern, loggin aktivieren, errorlevel hochschrauben,ect.)
Ich weiß zwar auchnciht ob das hilft und ob ich/wir da was finden... aber besser als raten, spekulieren und verdächtigen ist es alle mal
~Arano
EDIT:
Aber zuerst versuch mal den Vorschlag vom Lochkartenstanzer, das ist eine gute Idee !
HA und damit hätten wir auch das Verhalten von `ls` erklärt...
... A timestamp is considered to be recent if it is less than six months old, ...
Zitat von @O-Marc:
Guten Morgen,
zunächst einmal ein Dankeschön an Lochkartenstanzer und Arano. ;)
Leider habe ich das Problem noch nicht lösen können.
Guten Morgen,
zunächst einmal ein Dankeschön an Lochkartenstanzer und Arano. ;)
Leider habe ich das Problem noch nicht lösen können.
Schade, hier noch die Beschreibung von gnu.org wie TIME_STYLE sich auf das Ausgabeformat auswirkt. Du könntest den passenden Ausgabestring Dir mit "--time_style" zusammenbasteln und einen alias auf ls definieren, wenn das das Problem sein sollte.
Wird die "lang.conf" per FTP ausgetauscht, führt das zu der o.g. Smarty-Fehlermeldung. Die bekomme ich wirklich nur
dann wieder weg, wenn ich mit "touch -r" die Zeitstempel überschreiben lasse.
dann wieder weg, wenn ich mit "touch -r" die Zeitstempel überschreiben lasse.
Das sieht mir eher nach einem unsauberen Programmierer aus., der nicht evrstanden hat, das sich die Ausgabe von ls mit diversen Umgebungsdbedingen verändert. Du solltest mal den ls-befehl wie oben umdefinieren und dann schauen, ob der fehler belibt oder sich verändert.
lks
PS: Ich gehe mal davon aus, daß Du Bestiz- und Zugriffsrechte geprüft hast und das nicht das das problem war, warum Dein System den Fehler meldet.