Wie kommen unterschiedliche Zeitstempel auf einem Ubuntu Server zustande?
08.02.2012
09:50:55 Uhr395 Aufrufe
14 Antworten
09:50:55 Uhr
14 Antworten
Noch nicht bewertet
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:
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
Alle Dateien vor einem bestimmten Datum tragen einen Zeitstempel bestehend aus Datum und Jahr:
01.
-rw-r--r-- 1 ftpuser psacln 27711 Apr 20 2011 lang_german_alt2.confFüge ich Dateien hinzu (als FTP-User oder auch lokal als root), so tragen diese einen Zeitstempel bestehend aus Datum und Uhrzeit:
01.
-rw-r--r-- 1 ftpuser psacln 28924 Sep 15 12:13 lang_german_alt3.confHat 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:
01.
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 1097Nun 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
Lochkartenstanzer schreibt am 08.02.2012 um 10:01:26 Uhr
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 .wineI.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
Lochkartenstanzer schreibt am 08.02.2012 um 10:44:52 Uhr
ls -laInteressant. , 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
O-Marc schreibt am 08.02.2012 um 11:54:17 Uhr
Bei mir wird das angezeigt:
.
Ganz unabhängig davon, was "ls -la" mir an Informationen ausgibt, muss es ja tatsächliche Unterschiede zwischen den Dateien geben. Sonst würde der Webserver ja keine Probleme machen.
Wie kann man sich denn noch Dateiinformationen ansehen?
ls (GNU coreutils) 6.10 Copyright (C) 2008 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Written by Richard Stallman and David MacKenzie.Ganz unabhängig davon, was "ls -la" mir an Informationen ausgibt, muss es ja tatsächliche Unterschiede zwischen den Dateien geben. Sonst würde der Webserver ja keine Probleme machen.
Wie kann man sich denn noch Dateiinformationen ansehen?
Lochkartenstanzer schreibt am 08.02.2012 um 12:41:02 Uhr
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
O-Marc schreibt am 08.02.2012 um 14:25:09 Uhr
Hier die Ausgaben:
Sieht für mich beides sehr ähnlich aus. Kannst Du daraus etwas ableiten?
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 +0200File: `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 +0200Sieht für mich beides sehr ähnlich aus. Kannst Du daraus etwas ableiten?
Lochkartenstanzer schreibt am 08.02.2012 um 15:02:54 Uhr
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 +0200Diese 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 +0200Diese 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).
Arano schreibt am 08.02.2012 um 15:20:34 Uhr
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
01.
arano@lamp:~$ alias 02.
alias ls='ls --color=auto' 03.
arano@lamp:~$ ls --version 04.
ls (GNU coreutils) 8.5 05.
Copyright © 2010 Free Software Foundation, Inc. 06.
Lizenz GPLv3+: GNU GPL Version 3 oder höher <http://gnu.org/licenses/gpl.html> 07.
Dies ist freie Software: Sie können sie ändern und weitergeben. 08.
Es gibt keinerlei Garantien, soweit wie es das Gesetz erlaubt. 09.
10.
Geschrieben von Richard M. Stallman und David MacKenzie. 11.
arano@lamp:~$ 01.
arano@lamp:~$ ls --full-time2. Warum stört sich der Webserver am Zeitstempelformat?
01.
Fatal error: Smarty error: unable to write to $compile_dir '/var/www/vhosts/url/httpdocs/templates_c'. Be 02.
> sure $compile_dir is writable by the web server user. in 03.
> /var/www/vhosts/url/httpdocs/includes/classes/Smarty_2.6.26/Smarty.class.php on line 1097Nun 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
O-Marc schreibt am 08.02.2012 um 16:25:12 Uhr
Zitat von Lochkartenstanzer:
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.
Für "ls" gibt es nur ein Alias und das betrifft die Farbe.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.
Schau mal nach, wie LANG gesetzt ist. ggf noch die ganzen LC-Variablen prüfen (bei mir steht alles auf C).
01.
LANG =Aranos Erklärung klingt jedoch sehr einleuchtend.
O-Marc schreibt am 08.02.2012 um 16:35:27 Uhr
Zitat von Arano:
Damit du bei Dateien die NICHT älter als ein Jahr sind noch schnell erkennen kannst zu welcher Uhrzeit sie erstellt wurden.
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
>...Damit du bei Dateien die NICHT älter als ein Jahr sind noch schnell erkennen kannst zu welcher Uhrzeit sie erstellt wurden.
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
Alternativ lass dir doch mal das volle Datum ausgeben:
Klingt sehr plausibel. Die vollen Timestamps unterscheiden sich nicht voneinander, außer natürlich in den Zahlen:01.
-rw-r--r-- 1 ftpjbsshop psacln 27711 2011-04-20 10:57:59.000000000 +0200 lang_german_alt2.conf 02.
-rw-r--r-- 1 ftpjbsshop psacln 28924 2011-09-15 12:13:02.000000000 +0200 lang_german_alt3.confBist du dir sicher das es an der DATEI liegt !?
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
Damit hast Du mich auf eine Idee gebracht. Aus Zeitmangel werde ich das erst morgen prüfen und hier posten.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
Danke.
O-Marc schreibt am 09.02.2012 um 10:06:19 Uhr
Guten Morgen,
zunächst einmal ein Dankeschön an Lochkartenstanzer und Arano. ;)
Leider habe ich das Problem noch nicht lösen können.
Das error_log von Apache2 ist sauber (zumindest, was diese Sache angeht) und ein error_log für php habe ich nicht gefunden. Laut "phpinfo()" ist kein Wert für ein error_log angegeben.
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.
Der "ftpuser" ist Besitzer des Verzeichnisses und aller darin liegenden Dateien und darf lesen, schreiben und ausführen.
Die Gruppe "psacln" darf lesen und ausführen. Der Webserver-User "www-data" gehört dieser Gruppe an und darf demnach wirklich nicht in das Verzeichnis schreiben. Demnach stimmt die SMARTY-Fehlermeldung. Das erklärt aber immer noch nicht, wieso ich das Problem mit "touch -r" lösen kann.
Was ich nicht verstehe ist, dass die "lang.conf" im Laufe des Jahres 2011 mehrmals per FTP getauscht wurde und das nie zu Problemen führte. Bei gleichen Verzeichnisberechtigungen.
zunächst einmal ein Dankeschön an Lochkartenstanzer und Arano. ;)
Leider habe ich das Problem noch nicht lösen können.
Das error_log von Apache2 ist sauber (zumindest, was diese Sache angeht) und ein error_log für php habe ich nicht gefunden. Laut "phpinfo()" ist kein Wert für ein error_log angegeben.
Zitat von Arano:
Bist du dir sicher das es an der DATEI liegt !?
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...)
An den Verzeichnisberechtigungen wurde und wird nichts verändert. Es geht wirklich nur um die Datei. Bist du dir sicher das es an der DATEI liegt !?
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...)
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.
Davon mal abgesehen, es ist nicht der Webserver der sich daran stört, es ist die Templateengine SMARTY
Das stimmt. Der "ftpuser" ist Besitzer des Verzeichnisses und aller darin liegenden Dateien und darf lesen, schreiben und ausführen.
Die Gruppe "psacln" darf lesen und ausführen. Der Webserver-User "www-data" gehört dieser Gruppe an und darf demnach wirklich nicht in das Verzeichnis schreiben. Demnach stimmt die SMARTY-Fehlermeldung. Das erklärt aber immer noch nicht, wieso ich das Problem mit "touch -r" lösen kann.
Was ich nicht verstehe ist, dass die "lang.conf" im Laufe des Jahres 2011 mehrmals per FTP getauscht wurde und das nie zu Problemen führte. Bei gleichen Verzeichnisberechtigungen.
Arano schreibt am 09.02.2012 um 17:28:44 Uhr
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, ...
Lochkartenstanzer schreibt am 09.02.2012 um 17:31:45 Uhr
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.












