Temporäre Session-Dateien werden schreibgeschützt angelegt

Alles, was PHP betrifft, kann hier besprochen werden.

Temporäre Session-Dateien werden schreibgeschützt angelegt

Postby mascha » 29. May 2008 14:17

Hallo,

ich betreibe auf einem Windows 2003 Server einen Apache-Webserver (2.0.59) mit PHP 5.2.1.

Sporadisch kommt es vor das ab einem gewissen Zeitpunkt die von PHP im "session.save_path" neu angelegten Session-Dateien mit einem Schreibschutz-Attribut angelegt werden.
Wenn nun die "garbage collection" aktiv wird und versucht die nicht mehr gültigen Session-Dateien zu löschen kommt es zu einer Warnung
"session_start(): open (C:\temp\php\session\sess_..., O_RDWR) failed: Permission denied (13) in ...".

Sobald der Schreibschutz auf die Session-Dateien von Hand wieder entfernt wurde funktioniert wieder alles einwandfrei. Ich habe mir nun vorübergehend mit einer Batch-Datei beholfen die
mittels "attrib -R c:\temp\php\*.* /S /D" den Schreibschutz entfernt und lasse diese per geplantem Task einmal pro Minute ausführen. Dies ist jedoch nicht besonders zufriedenstellend...

Die Session-Konfiguration in der PHP-Ini sieht wie folgt aus:
-------------------------------------------------------------
Session Support = enabled
Registered save handlers = files user
Registered serializer handlers = php php_binary wddx

session.auto_start = Off
session.bug_compat_42 = Off
session.bug_compat_warn = On
session.cache_expire = 180
session.cache_limiter = nocache
session.cookie_domain = no value
session.cookie_httponly = Off
session.cookie_lifetime = 0
session.cookie_path = /
session.cookie_secure = Off
session.entropy_file = no value
session.entropy_length = 0
session.gc_divisor = 100
session.gc_maxlifetime = 7200
session.gc_probability = 1
session.hash_bits_per_character = 5
session.hash_function = 0
session.name = PHPSESSID
session.referer_check = no value
session.save_handler = files
session.save_path = C:\temp\php\session
session.serialize_handler = php
session.use_cookies = On
session.use_only_cookies = Off
session.use_trans_sid = 0
-------------------------------------------------------------

Ich habe bereits überprüft das die Dateien nicht etwa durch einen anderen Prozess schreibgeschützt werden: alle Dateizugriffe auf das Verzeichnis erfolgen laut Filemon.exe durch den Apache-Prozess.
Es ist auch nicht so das das komplette Verzeichnis auf einen Schlag schreibgeschützt wird sondern es werden immer nur die ab einem Zeitpunkt X neu angelegten Session-Dateien mit Schreibschutz versehen.
Nach dem manuellen Entfernen aller Schreibschutz-Attribute dauert es manchmal Stunden oder sogar Tage bis wieder ab einem Zeitpunkt Y neue Dateien mit Schreibschutz versehen werden.
Ich habe den session.save_path auch schon auf ein anderes Verzeichnis umkonfiguriert und die NTFS-Zugriffsrechte darauf kontrolliert -> selber Effekt.

Wie bereits gesagt: Es handelt sich nicht um ein offenes File-Handle eines hängenden Tasks oder soetwas sondern tatsächlich um das Filesystem-Attribut "Readonly" für die entsprechenden Dateien.

Hat jemand eine Idee woran es liegen könnte das die Session-Dateien sporadisch mit Schreibschutz angelegt werden?

Gruß
mascha
mascha
 
Posts: 1
Joined: 29. May 2008 11:07

Return to PHP

Who is online

Users browsing this forum: No registered users and 20 guests