Temp Ordner Finden und Testen!

Alles, was PHP betrifft, kann hier besprochen werden.

Temp Ordner Finden und Testen!

Postby Zaeggu » 15. February 2007 11:17

Hallo zusammen, könnte mir jemand bei nem problem helfen, wie ich noch bei beiden es so machen könnte, dass zb die Datei zaeggu.gif also http://www.pc-technik.ch/testscript/images/zaeggu.gif in die Jeweiligen Temporären Ordner Hochgeladen wird, überprüft wird, ob Vorhanden, und wieder gelöscht werden?

Hier der bisherige Code, wo ich eben nicht weiterkomme wie:

Code: Select all
    //upload_tmp_dir().
if (ini_get('upload_tmp_dir'))
   {
    $tmp_text = "&nbsp;<font class=\"ok\">".(ini_get('upload_tmp_dir'))." = Bestanden!</font>";
    }else{
    $tmp_text = "&nbsp;<font class=\"error\">".(ini_get('upload_tmp_dir'))." = Nicht Bestanden!</font>";
}

    //session_save_path().
if (function_exists('session_save_path'))
   {
    $save_tmp_text = "&nbsp;<font class=\"ok\">".session_save_path()." = Bestanden!</font>";
    }else{
    $save_tmp_text = "&nbsp;<font class=\"error\">".session_save_path()." = Nicht Bestanden!</font>";
}
Gruss Zaeggu
Zaeggu
 
Posts: 37
Joined: 20. April 2006 08:00

Postby Wiedmann » 15. February 2007 11:27

in die Jeweiligen Temporären Ordner Hochgeladen

Wieso wird etwas in mehrere temporäre Ordner bei dir hochgeladen?

Hier der bisherige Code, wo ich eben nicht weiterkomme wie:

Wenn man jetzt wüsste was dieser Code eigentlich machen soll? Zusammen mit der Beschreibung oben passt da nichts zusammen...


Wenn es dir um irgendeine Art von normalen Dateiuploads geht, dann empfehle ich dir das entsprechende Kapitel im PHP-Manual, und das du dir die Beispiele dort anschaust, bzw. ausprobierst.
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby Zaeggu » 15. February 2007 11:33

Jep, habe erstens einmal den falschen Code von einer älteren Version Erwischt!

Hier der Aktuelle:

Code: Select all
    //upload_tmp_dir().
if (($path = ini_get('upload_tmp_dir')) && @is_writable($path))
   {
    $tmp_text = "&nbsp;<font class=\"ok\">".(ini_get('upload_tmp_dir'))." = Schreibtest Bestanden!</font>";
    }else{
    $tmp_text = "&nbsp;<font class=\"error\">".(ini_get('upload_tmp_dir'))." = Schreibtest nicht Bestanden!</font>";
}

    //session_save_path().
if (function_exists('session_save_path') && ($path = session_save_path()) && @is_writable($path))
   {
    $save_tmp_text = "&nbsp;<font class=\"ok\">".session_save_path()." = Schreibtest Bestanden!</font>";
    }else{
    $save_tmp_text = "&nbsp;<font class=\"error\">".session_save_path()." = Schreibtest nicht Bestanden!</font>";
}


Der Zweck ist es, die Ordner zu Ermitteln und zu Testen! Nur leider habe ich bis jetzt niergends was gefunden!

Was bisher auch Klappt ist, wenn zwar dann die Ermittlung in der php.ini klappt, also zb das "D:\server\xampp\tmp = Bestanden!" Ausgegeben wird, ist auch der Ordner Vorhanden, nur ob er die nötigen Schreibrechte hat, wird jetzt noch nicht Ermittelt!
Gruss Zaeggu
Zaeggu
 
Posts: 37
Joined: 20. April 2006 08:00

Postby Wiedmann » 15. February 2007 11:46

Was bisher auch Klappt ist, wenn zwar dann die Ermittlung in der php.ini klappt, also zb das "D:\server\xampp\tmp = Bestanden!" Ausgegeben wird,

OK, erst einmal eine Denksportaufgabe für dich:
Code: Select all
if ($path = ini_get('upload_tmp_dir') {}

Was macht dieser Code genau? Und schau lieber nochmal im PHP-Manual nach, bevor du vorschnell antwortest.

&& @is_writable($path))

Mal abgesehen davon, dass diese Funktion IMHO keine Fehlermeldung ausgibt, funktioniert diese unter Windows nicht (wirklich).
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby Zaeggu » 15. February 2007 12:19

Also den Code habe ich wie folgt Geändert:

Code: Select all
    //upload_tmp_dir().
if (ini_get('upload_tmp_dir') && ($path = (ini_get('upload_tmp_dir'))) && @is_writable($path))
   {
    $tmp_text = "&nbsp;<font class=\"ok\">".(ini_get('upload_tmp_dir'))." = Bestanden!</font>";
    }else{
    $tmp_text = "&nbsp;<font class=\"error\">".(ini_get('upload_tmp_dir'))." = Nicht Bestanden!</font>";
}

    //session_save_path().
if (function_exists('session_save_path') && ($path = session_save_path()) && @is_writable($path))
   {
    $save_tmp_text = "&nbsp;<font class=\"ok\">".session_save_path()." = Bestanden!</font>";
    }else{
    $save_tmp_text = "&nbsp;<font class=\"error\">".session_save_path()." = Nicht Bestanden!</font>";
}


Ohne "&& @is_writable($path)" wird nicht Ermittelt, ob der Ordner auch Vorhanden ist, sondern es wird nur die Pfadangabe aus der php.ini Angezeigt, also auch wenn der Ordner fehlt, als Bestanden Angezeigt, was ja nicht stimmt, wenn der Ordner nicht Vorhanden ist!
Gruss Zaeggu
Zaeggu
 
Posts: 37
Joined: 20. April 2006 08:00

Postby Wiedmann » 15. February 2007 12:28

Also den Code habe ich wie folgt Geändert:

ich gkaube du hast mich falsch verstanden.
Ich wollte nicht das du den (ganzen) Code änderst, sondern das du mir die eine Codezeile von meinem Post oben genau erklärst...
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby Zaeggu » 15. February 2007 12:34

Also das ($path = (ini_get('upload_tmp_dir')) ist die definierung für $path hier: && @is_writable($path)!

Oder anders gesagt, anstatt immer wieder zb (ini_get('upload_tmp_dir')) zu schreiben, reicht dann ($path)!

Ups, jetzt weis ich was du meinst! Autsch! Hätte ja dann die anderen (ini_get('upload_tmp_dir')) gar nicht schreiben müssen, sondern nur ($path)
Gruss Zaeggu
Zaeggu
 
Posts: 37
Joined: 20. April 2006 08:00

Postby Wiedmann » 15. February 2007 12:38

Hm, die Frage war wohl zu schwer *g*
- kam in meiner Zeile ein is_writable() vor?
- Meine Zeile fängt mit if() an, welches du gar nicht erklärst:
-- Was passiert in dem if()?
-- Was ergibt sich für den Ablauf des if(), durch das Ergebnis in diesem if()?

Nochmal:
Wir reden gerade nur über diese eine Zeile wie sie hier steht:
Code: Select all
if ($path = ini_get('upload_tmp_dir') {}
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby Zaeggu » 15. February 2007 12:47

if() startet einen Vergleichsoperator!
Gruss Zaeggu
Zaeggu
 
Posts: 37
Joined: 20. April 2006 08:00

Postby Wiedmann » 15. February 2007 12:53

if() startet einen Vergleichsoperator!

Nicht genau:
if() prüft, ob der Ausdruck in der Klammer ein TRUE ergibt. Und wenn ja, dann wird der Befehl nach if() oder die im folgenden {} ausgeführt.

Aber sei's drum. Erkläre mir mal deinen/diesen "Vergleichsoperator" genau.
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby sari42 » 15. February 2007 13:12

ich war jetzt mal zu faul, den ganzen thread zu lesen, aber ein kleiner Hinweis:

wenn obige folder gar nicht gesetzt sind (weder in php.ini oder sonstwo),
wird von php automatisch das "OS default tmp dir" benutzt (siehe $_ENV['TMP'], in "nicht Win" Systemen meistens "/tmp")
sari42
 
Posts: 800
Joined: 27. November 2005 18:28

Postby Zaeggu » 15. February 2007 13:18

Also

Code: Select all
    //upload_tmp_dir().
if (ini_get('upload_tmp_dir') && ($path = (ini_get('upload_tmp_dir'))) && @is_writable($path))
   {
    $tmp_text = "&nbsp;<font class=\"ok\">".($path)." = Bestanden!</font>";
    }else{
    $tmp_text = "&nbsp;<font class=\"error\">".($path)." = Nicht Bestanden!</font>";
}


if (ini_get('upload_tmp_dir') && ($path = (ini_get('upload_tmp_dir'))) && @is_writable($path))

Startet den Vergleich "(ini_get('upload_tmp_dir')" = Einstellung die aus der php.ini ausgelesen wird!

"($path = (ini_get('upload_tmp_dir')))" $path definiert (ini_get('upload_tmp_dir'))!

"@is_writable($path)" dient dazu, ob der Ordner, der durch "(ini_get('upload_tmp_dir')" Ermittelt wurde, auch Existiert!

"{$tmp_text = "&nbsp;<font class=\"ok\">".($path)." = Bestanden!</font>";}" wird Ausgegeben, wenn "upload_tmp_dir" durch eine Pfadangabe Konfiguriert ist, und der temporäre Ordner auf dem Server auch Vorhanden ist!

"else" heisst eigentlich nur "Wenn nicht dann"

"{$tmp_text = "&nbsp;<font class=\"error\">".($path)." = Nicht Bestanden!</font>";}" wird ausgegeben, wenn entweder "upload_tmp_dir" nicht Konfiguriert ist, oder der Temporäre Ordner nicht Vorhanden ist!
Gruss Zaeggu
Zaeggu
 
Posts: 37
Joined: 20. April 2006 08:00

Postby Wiedmann » 15. February 2007 13:49

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)
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby Zaeggu » 15. February 2007 14:03

Wiedmann wrote: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?


Danke jedenfalls!

Jep, das macht es auch, nur eben wenn es noch testen würde, ob der Ordner auch die Schreibrechte hat, wäre toll! Wenn unter Linux! Wobei es ja jetzt unter Vista auch losgeht mit dem Rechtekram!
Gruss Zaeggu
Zaeggu
 
Posts: 37
Joined: 20. April 2006 08:00

Postby Wiedmann » 15. February 2007 14:14

Wobei es ja jetzt unter Vista auch losgeht mit dem Rechtekram!

Das funktioniert /gibt es schon seit NT, bzw. seit es NTFS gibt. Nur hat weder PHP noch der Apache eine Ahnung davon, wie Rechte unter Windows funktionieren.

Jep, das macht es auch,

Das es das macht was ich geschrieben hab weis ich ;-) Nur willst du das wirklich so?
--> Wenn du auf die Frage "Ist es das was du willst?" mit "Yep" anwortest, ist alles OK und wir können aufhören. Ergo meintest du also "Nope, macht es nicht" und nicht "jep" ;-)

nur eben wenn es noch testen würde, ob der Ordner auch die Schreibrechte hat,

Der Satz spricht ja dagegen. Die "Schreibfähigkeit" soll ja auch getestet werden.

Nur noch eine Frage zwischendurch:
Uploads und Sessions könnten ja, wie schon von "sari42" gesagt, auch tun, wenn dort keine Werte drin stehen...
Für was brauchst du das denn?
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Next

Return to PHP

Who is online

Users browsing this forum: No registered users and 9 guests