Cimme
18-04-2005, 23:15
Hi miteinander,
ich habe das Problem, dass ich durch SafeMode-Restriktionen keine Dateien schreiben kann.
Ich versuche aufgrund dessen dies nun mit den PHP-eigenen FTP-Funktionen zu lösen, was aber auch nicht so funktioniert wie es sollte.
Folgender Code wird eingebunden:
class upload {
#dircheck => besteht das Verzeichnis?
function dircheck($ftpverbindung,$dir){
# prüfen wir mal ob Verzeichnis besteht!
if(is_dir($dir)){
$dirchecker = "vorhanden";
}else{
ftp_chdir($ftpverbindung,"/httpdocs/SIT/data/userimages/");
ftp_mkdir($ftpverbindung,$_COOKIE[sitlog]);
chmod($dir,0777);
# Verzeichnis angelegt
}
}
#uploadfile
function uploadfile($ftpverbindung,$datei,$verzeichnis,$zae hler) {
#erstmal die größe checken und Dateiendung
// filename muss extrahiert werden, um die Endung zu bekommen
$dname = explode(".",$datei_name);
$dnamesize = count($dname);
$datei_ext = $dname[$dnamesize-1];
$dateiname = date(dmy) . $zaehler;
# $ftpdir = ftp_chdir($ftpconnection,$verzeichnis);
$dirload = $verzeichnis . $dateiname . ".jpg";
ftp_put($ftpverbindung,$dirload,$datei,FTP_BINARY) ;
// das ganze am Besten in eine Variable packen!
$saveddatei = $makedirlink . "/" . $dateiname . ".jpg";
if(file_exists($saveddatei)) {
echo "<br>Die Datei $datei_name wurde erfolgreich gespeichert. Augrund sicherheitstechnischen Maßnahmen wurde der Dateiname allerdings verändert.<br />";
}else{
echo "<p><strong>Upload gescheitert!!</strong><br /> Es wurde eine Datei angegeben, welche entweder zu groß (>650 kb) oder nicht auf die Dateiart *.jpg endet.</p>";
clearstatcache();
}
}
}
Eingebunden wird es dann wie folgt:
include("$source_dir/inserate/uploadclass.php");
// initialisiere Classe für Dateien
if($upload1=="") {
echo "Es wurde keine Datei in Dateifeld 1 zum Upload benannt. Somit wurde keine Datei hochgeladen. <br /><br />";
}else{
$fileload1 = new upload;
$fileload1->dircheck($ftpconnection,$makedirlink);
$fileload1->uploadfile($ftpconnection,$upload1,$makedirlink,1) ;
$saveddatei1 = $saveddatei;
}
if($upload2=="") {
echo "Es wurde keine Datei in Dateifeld 2 zum Upload benannt. Somit wurde keine Datei hochgeladen. <br /><br />";
}else{
$fileload2 = new upload;
$fileload2->dircheck($ftpconnection,$makedirlink);
$fileload2->uploadfile($upload2,$makedirlink,2);
$saveddatei2 = $saveddatei;
}
wobei sich das bis $fileload5 fortsetzt.
Das Formular sieht wie folgt aus:
<input type="file" name="upload1" size="25" accept="image/jpg">
<input type="file" name="upload2" size="25" accept="image/jpg">
<input type="file" name="upload3" size="25" accept="image/jpg">
<input type="file" name="upload4" size="25" accept="image/jpg">
<input type="file" name="upload5" size="25" accept="image/jpg">
Als Fehlermeldung wird folgendes ausgegeben:
Warning: ftp_mkdir(): 1: File exists in /home/httpd/vhosts/swissimmotrade.ch/httpdocs/SIT/sources/inserate/uploadclass.php on line 17
Warning: chmod(): Unable to access /httpdocs/SIT/data/userimages/1 in /home/httpd/vhosts/swissimmotrade.ch/httpdocs/SIT/sources/inserate/uploadclass.php on line 18
Warning: chmod(): open_basedir restriction in effect. File(/httpdocs/SIT/data/userimages/1) is not within the allowed path(s): (/home/httpd/vhosts/swissimmotrade.ch/httpdocs:/tmp) in /home/httpd/vhosts/swissimmotrade.ch/httpdocs/SIT/sources/inserate/uploadclass.php on line 18
Upload gescheitert!!
Es wurde eine Datei angegeben, welche entweder zu groß (>650 kb) oder nicht auf die Dateiart *.jpg endet.
Liegt es an meiner Logik oder am SafeMode?
Link zu PHPinfo (http://www.swissimmotrade.ch/SIT/phpinfo.php)
Wäre über einen Denkansatz oder einer Lösungsmöglichkeit sehr erfreut! :D
Vielen Dank schonmal!
ich habe das Problem, dass ich durch SafeMode-Restriktionen keine Dateien schreiben kann.
Ich versuche aufgrund dessen dies nun mit den PHP-eigenen FTP-Funktionen zu lösen, was aber auch nicht so funktioniert wie es sollte.
Folgender Code wird eingebunden:
class upload {
#dircheck => besteht das Verzeichnis?
function dircheck($ftpverbindung,$dir){
# prüfen wir mal ob Verzeichnis besteht!
if(is_dir($dir)){
$dirchecker = "vorhanden";
}else{
ftp_chdir($ftpverbindung,"/httpdocs/SIT/data/userimages/");
ftp_mkdir($ftpverbindung,$_COOKIE[sitlog]);
chmod($dir,0777);
# Verzeichnis angelegt
}
}
#uploadfile
function uploadfile($ftpverbindung,$datei,$verzeichnis,$zae hler) {
#erstmal die größe checken und Dateiendung
// filename muss extrahiert werden, um die Endung zu bekommen
$dname = explode(".",$datei_name);
$dnamesize = count($dname);
$datei_ext = $dname[$dnamesize-1];
$dateiname = date(dmy) . $zaehler;
# $ftpdir = ftp_chdir($ftpconnection,$verzeichnis);
$dirload = $verzeichnis . $dateiname . ".jpg";
ftp_put($ftpverbindung,$dirload,$datei,FTP_BINARY) ;
// das ganze am Besten in eine Variable packen!
$saveddatei = $makedirlink . "/" . $dateiname . ".jpg";
if(file_exists($saveddatei)) {
echo "<br>Die Datei $datei_name wurde erfolgreich gespeichert. Augrund sicherheitstechnischen Maßnahmen wurde der Dateiname allerdings verändert.<br />";
}else{
echo "<p><strong>Upload gescheitert!!</strong><br /> Es wurde eine Datei angegeben, welche entweder zu groß (>650 kb) oder nicht auf die Dateiart *.jpg endet.</p>";
clearstatcache();
}
}
}
Eingebunden wird es dann wie folgt:
include("$source_dir/inserate/uploadclass.php");
// initialisiere Classe für Dateien
if($upload1=="") {
echo "Es wurde keine Datei in Dateifeld 1 zum Upload benannt. Somit wurde keine Datei hochgeladen. <br /><br />";
}else{
$fileload1 = new upload;
$fileload1->dircheck($ftpconnection,$makedirlink);
$fileload1->uploadfile($ftpconnection,$upload1,$makedirlink,1) ;
$saveddatei1 = $saveddatei;
}
if($upload2=="") {
echo "Es wurde keine Datei in Dateifeld 2 zum Upload benannt. Somit wurde keine Datei hochgeladen. <br /><br />";
}else{
$fileload2 = new upload;
$fileload2->dircheck($ftpconnection,$makedirlink);
$fileload2->uploadfile($upload2,$makedirlink,2);
$saveddatei2 = $saveddatei;
}
wobei sich das bis $fileload5 fortsetzt.
Das Formular sieht wie folgt aus:
<input type="file" name="upload1" size="25" accept="image/jpg">
<input type="file" name="upload2" size="25" accept="image/jpg">
<input type="file" name="upload3" size="25" accept="image/jpg">
<input type="file" name="upload4" size="25" accept="image/jpg">
<input type="file" name="upload5" size="25" accept="image/jpg">
Als Fehlermeldung wird folgendes ausgegeben:
Warning: ftp_mkdir(): 1: File exists in /home/httpd/vhosts/swissimmotrade.ch/httpdocs/SIT/sources/inserate/uploadclass.php on line 17
Warning: chmod(): Unable to access /httpdocs/SIT/data/userimages/1 in /home/httpd/vhosts/swissimmotrade.ch/httpdocs/SIT/sources/inserate/uploadclass.php on line 18
Warning: chmod(): open_basedir restriction in effect. File(/httpdocs/SIT/data/userimages/1) is not within the allowed path(s): (/home/httpd/vhosts/swissimmotrade.ch/httpdocs:/tmp) in /home/httpd/vhosts/swissimmotrade.ch/httpdocs/SIT/sources/inserate/uploadclass.php on line 18
Upload gescheitert!!
Es wurde eine Datei angegeben, welche entweder zu groß (>650 kb) oder nicht auf die Dateiart *.jpg endet.
Liegt es an meiner Logik oder am SafeMode?
Link zu PHPinfo (http://www.swissimmotrade.ch/SIT/phpinfo.php)
Wäre über einen Denkansatz oder einer Lösungsmöglichkeit sehr erfreut! :D
Vielen Dank schonmal!