Und schon wieder soviel Code... (Ist es echt so schwierig bei einer Zeile zu bleiben wie erwünscht?)
Aber dann halt deine Zeile:
- Code: Select all
if (ini_get('upload_tmp_dir') && ($path = (ini_get('upload_tmp_dir'))) && @is_writable($path)) {}
Mehr Zeilen brauchen wir gerade nicht!
Also erst einmal haben wir diesen Ausdruck:
- Code: Select all
(ini_get('upload_tmp_dir')
Da kommt entweder TRUE raus (der Wert ist in der php.ini gesetzt), oder FALSE (der Wert ist in der php.ini nicht gesetzt). (Das Ergebnis der Funktion wird zu TRUE oder FALSE evaluiert)
Als nächsten Ausdruck:
- Code: Select all
($path = (ini_get('upload_tmp_dir')))
Grundsätzlich das Selbe wie gerade eben, nur das du zusätzlich noch den Wert aus der php.ini der Variablen $path zuweisst.
Genau genommen: Du weisst der Variablen den Wert aus der php.ini zu, und dann wird geschaut, ob der Wert in der Variablen zu TRUE oder FALSE evaluiert.
--> Den ersten Ausdruck kannst du dir also sparen.
Und dann als letzten Ausdruck:
- Code: Select all
@is_writable($path)
- Zuersteinmal schaltest du Fehlermeldungen ab, die eh nicht auftreten können (und notfalls die Fehlersuche erschweren würden).
Danach testest du, ob der Pfad der in der Variablen $path ist, für den User (nicht immer Gruppe) beschreibbar ist. Also nicht nur auf Existenz (dafür gibts was anderes). Unter Windows gibt diese Funktion aber i.d.R immer TRUE zurück, sofern der Pfad nur existiert.
Somit fassen wir zusammen (du bist ja unter Windows):
- Wenn in der php.ini ein Wert steht, dieser Wert ein existierendes Verzeichnis ist, dann gibt es ein OK, auch wenn man dort nicht schreiben kann.
- Wenn in der php.ini kein Wert steht, oder ein vorhandener Wert kein existierendes Verzeichnis ist, dann gibt es einen ERROR.
Ist es das was du willst?
(analog dann beim session_save_path)