Mit Java einen neuen Ordner anlegen (Save mode=ON)

Begonnen von GerhardSt, 08 April 2007, 14:42:28

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 1 Gast betrachten dieses Thema.

GerhardSt

Hallo,
ich möchte gerne mittels Java einen neuen Ordner auf meinem Server anlegen.
Auf meinen Server ist Save mode auf ON, gibt es da eine Möglichkeit, damit dieses Java-Script einen Ordner anlegen darf?

Danke und Frohe Ostern,
Gerhard

Breaker

Soviel ich weiß, gibt es diese Option garnicht für Java, weder bei Safemode=on, noch bei off..wieso nimmst du kein PHP?
Linux ist wie guter Sex, man kann es beschreiben oder drüber reden,
man weiß erst was es bedeutet, wenn man es erlebt hat.

GerhardSt

Danke, Breaker für den Hinweis.
Ich habe bereits verschiedenes probiert, nur leider kann ich ohne FTP keine Ordner anlegen, das hochladen von Dateien funktioniert aber (wenn Ordner 777-Rechte hat).
Jetzt suche ich nach einer Möglichkeit, wie ich Unterordner anlegen kann, in einem Ordner mit 777-Rechte.
Meiner Meinung liegt das Problem am Safemode=on.

Musicman75

#3
Hier mal ein kleines Script, welches dir einen Ordner anlegt und in diesem eine Datei erstellt.
Ist der Ordner vorhanden, wird die Datei gelöscht und dann der Ordner entfernt.

Du kannst keine Ordner löschen, in dem Dateien enthalten sind.

Der Ordner, in welchen die Ordner erstellt werden sollen, muss CHMOD 777 haben.

<?php
$path 
$_SERVER['DOCUMENT_ROOT'];
$path $path."/ordner_anlegen";
echo 
$path."\n\n";

if (
file_exists("$path/neuerordner")) {
unlink("$path/neuerordner/data.txt");
rmdir("$path/neuerordner");
echo 
"Dieser Name existiert bereits!\nOrdner geloescht";
} else {
echo 
"Fertig";
mkdir("$path/neuerordner"0777);
$dz fopen("$path/neuerordner/data.txt","w+");
fclose($dz);
}

?>


Hab aber keine Ahnung, wie das ,mit savemode on funktioniert.
Unaufgeforderte Support PMs & Emails werden ignoriert

Immer erst die Boardsuche verwenden und gegebenenfalls einen neuen Threat eröffnen, wenn das Problem noch nicht behandelt wurde!

GerhardSt

Danke, Musicman75!
Ich werde das mal probiern.
ZitatDu kannst keine Ordner löschen, in dem Dateien enthalten sind.
Danke, will ich auch gar nicht, mir geht´s rein nur darum einen Ordner zu erstellen in dem ich dann Dateien hochladen kann.

Musicman75

#5
Das funktioniert nur, wenn save mode off ist. ansonsten kann in dem ordner, welcher angelegt wurde keine datei angelegt werden.

Für was sollen denn die dateien sein? Vielleicht geht das ja auch anders.


Irgendwo hier im forum gab es auch mal nen java applet für dateiupload. musst mal suchen
Unaufgeforderte Support PMs & Emails werden ignoriert

Immer erst die Boardsuche verwenden und gegebenenfalls einen neuen Threat eröffnen, wenn das Problem noch nicht behandelt wurde!

GerhardSt

#6
Das ganze soll für Coppermine-Mx sein, um Bilder hochzuladen.
Ein Java-Script das bei mir Lokal funktioniert habe ich, nur auf der HP funktioniert das anlegen von Ordnern nicht. Wenn ich den Ordner mit einem FTP Programm erstelle und im 777-Rechte gebe, dann kann ich mit dem Script die Fotos hochladen. Das Teil kennst du ja bereits von hier
Währe Super wenn man sowas mal in PragmaMx integrierren könnte, den sonst brauchen immer alle Admins FTP-Zugang und man sieht ja hier im Forum wie oft das schiefgeht. Darum möchte ich es gar nicht erst so weit kommen lassen.

GerhardSt

@ Musicman75
Ich habe jetzt trotzdem mal deinen Code probiert.
Folgende Meldung bekomme ich wenn ich ihn ausführe.
Zitat/home/www/web158/html/ordner_anlegen Fertig
Warning: mkdir(/home/www/web158/html/ordner_anlegen/neuerordner): No such file or directory in /home/www/web158/html/test.php on line 12

Warning: fopen(/home/www/web158/html/ordner_anlegen/neuerordner/data.txt): failed to open stream: No such file or directory in /home/www/web158/html/test.php on line 13

Warning: fclose(): supplied argument is not a valid stream resource in /home/www/web158/html/test.php on line 14

Musicman75

der code muss in eine datei, welche im Ordner "ordner_anlegen" liegt. Dieser muss CHMOD 777 haben, da der neue ORdner dort drin angelegt wird.

Wirst aber nen safemode fehler bekommen.
Unaufgeforderte Support PMs & Emails werden ignoriert

Immer erst die Boardsuche verwenden und gegebenenfalls einen neuen Threat eröffnen, wenn das Problem noch nicht behandelt wurde!

GerhardSt

Sorry, habe ich übersehen.
Aber du hast recht, den jetzt bekomme ich das:
Zitat/home/www/web158/html/ordner_anlegen Fertig
Warning: fopen(): SAFE MODE Restriction in effect. The script whose uid is 1546 is not allowed to access /home/www/web158/html/ordner_anlegen/neuerordner owned by uid 30 in /home/www/web158/html/ordner_anlegen/test.php on line 13

Warning: fopen(/home/www/web158/html/ordner_anlegen/neuerordner/data.txt): failed to open stream: No such file or directory in /home/www/web158/html/ordner_anlegen/test.php on line 13

Warning: fclose(): supplied argument is not a valid stream resource in /home/www/web158/html/ordner_anlegen/test.php on line 14
Liegt also wirklich an Safe Mode.
Ich kenne mich mit diesem Safe Mode leider zu wenig aus, aber kann man diese Funktion z.B.: nicht für einen Ordner deaktivieren oder kann man das nur komplett abstellen?

Breaker

So habe ich es bei mir gelöst :


<?PHP
$pfad = "pfad/nach/irgendwo/hin/";
if(!is_dir($pfad)) {
mkdir($pfad, 0777);
}
if($bild01 && $bild01 != "") {
if (move_uploaded_file($_FILES['bild01']['tmp_name'],$pfad.$_FILES['bild01']['name'])) {
@chmod($pfad.$_FILES['bild01']['name'], 0777);
preg_match("/(.*?)([\d]+)(\.jpg|\.gif|\.png)/", $_FILES['bild01']['name'], $match);
list($bildurl, $dir, $id, $ext) = $match;
rename("" . $pfad.$_FILES['bild01']['name'] . "", "" . $pfad . "1" . $ext . "");
$picname1 = "1";
Thumbnail($pfad, $picname1.$ext, $thumb_breite);
sql_query("UPDATE " . $prefix . "_" . $tabellen . "_dateien SET bild01='" . mxAddSlashesForSQL($picname1.$ext) . "' WHERE lid='" . intval($lid) . "'");
} else {
echo "<div align='center'><hr><font class='title'>"._DATEINICHTOK1." :<br /><br />";
print_r($_FILES);
echo "</font></div>";
}
}

?>


Du müsstest dir eigentlich nurnoch den Typ der Datei und die DB anpassen ;)
Linux ist wie guter Sex, man kann es beschreiben oder drüber reden,
man weiß erst was es bedeutet, wenn man es erlebt hat.

GerhardSt

Hallo Breaker,
danke, dein Code funktioniert. Nur gibts da noch ein Problem, der angelegte Ordner hat nur 755-Rechte, kann man das noch ändern?
Kannst du mir bitte auch sagen wo du diesen Code eingebaut hast, bzw. brauche ich da noch irgendwelche Dateien, wo z.B.:_DATEINICHTOK1 definiert wird.

Danke, Gerhard

Breaker

Die CHMOD kannst du an dieser Stelle ändern (Der Ordner sollte eigentlich 777 haben :ugly: ):

if(!is_dir($pfad)) {
mkdir($pfad, 0777);
}


Das ist das 0777 hinter "mkdir($pfad...." (777 deshalb, weil du dann auch das verzeichniss per FTP löschen kannst, statt nur über die Userrechte des WWW-Users/Apache  (bei Linux-Systemen)

Das _DATEINICHTOK1 ist nur eine Definition für den text, der beim Fehler angezeigt werden soll,- zb. :

"Datei konnte nicht hochgeladen werden" (o.ä.)
Linux ist wie guter Sex, man kann es beschreiben oder drüber reden,
man weiß erst was es bedeutet, wenn man es erlebt hat.

Musicman75

Ich hab ne Lösung gefunden.  :mad2: Lacht mich aber nicht aus. Auf sowas muss man erstmal kommen.

ALSO:

1. Ein file mit folgendem Inhalt anlegen:
<?php
$path 
$_SERVER['DOCUMENT_ROOT'];
$path $path."/ordner_anlegen";
mkdir("$path/neuerordner"0600);
chmod("$path/neuerordner"0777);

$fp fopen("upload.php""w");

$data "<?php\n
\$path = \$_SERVER['DOCUMENT_ROOT'];
\$path = \$path.\"/ordner_anlegen\";


echo \"\nFertig\n\n\";
\$dz = fopen(\"\$path/neuerordner/data.txt\",\"w+\");
fclose(\$dz);

?>
";

fwrite($fp, $data);

fclose($fp);
header("Location: http://".$_SERVER['HTTP_HOST']."/ordner_anlegen/upload.php");

?>

Hier wird der Ordner angelegt und ein File, welches zum erstellen der Datei zuständig ist. Danach wird auf das neu erstellte file umgeleitet, welches dann die Datei in dem Ordner anlegt. Und siehe da, es geht, da die neu erstellte Datei jetzt dem gleichen User gehört, wie der zuvor erstellte Ordner.

Unaufgeforderte Support PMs & Emails werden ignoriert

Immer erst die Boardsuche verwenden und gegebenenfalls einen neuen Threat eröffnen, wenn das Problem noch nicht behandelt wurde!

GerhardSt

@ Musicman75
Echt super Lösung  :thumbup:
Der angelegte Ordner hat auch 777-Rechte. Jetzt muß ich es nur noch schaffen das ganze in die Iupload zu integrierren.

Danke!

GerhardSt

@ Musicman75
Könntest du mir bitte bei der Anpassung deines Codes helfen, irgendwie funktioniert das ganze dort nicht so richtig. Ich hänge die original und die geänderte Datei mal hier an.

Musicman75

lege dir mittels dieses scriptes deine upload datei einmal an. diese kannst du dann immer für den upload verwenden. es muss nicht jeden mal eine neue datei erzeigt werden.

einfach meinen code und bei $data fügst du den ganzen code deiner datei ein, welche den upload machen soll. den namen kannst du ja auch beliebig ändern. versuch mal die datei Iupload mit meinem code zu erzeugen. vielleicht reicht das ja schon.

Es ist schwierig ein script zu bearbeiten, wenn man nur eine datei davon hat. das kann nur in die hose gehen.
Unaufgeforderte Support PMs & Emails werden ignoriert

Immer erst die Boardsuche verwenden und gegebenenfalls einen neuen Threat eröffnen, wenn das Problem noch nicht behandelt wurde!

GerhardSt

Sorry, aber das verstehe ich jetzt nicht ganz. Dein Code erzeugt doch nur einen Ordner Namens "neuerordner" und nicht jedes mal einen anderen oder habe ich da was übersehen? :puzzled:
Ich hätte aber gerne das man damit beliebig verschiedene erzeugen kann, damit im Album ein wenig Ordnung herscht. Das ganze soll ausserdem einfach zu bedienen sein.
Könntest du mir da bitte helfen, ich habe das geänderte komplette Modul mal hier hochgeladen.

Danke!

Musicman75

es wird auch eine datei angelegt (upload.php). diese ist dann der gleichen uid wie der ordner zugewiesen, welhalb der dateiupload überhaupt klappt.
du müsstest also einfach nur einmal deine datei über diesem umweg erzeugen, damit die uid stimmt. danach sollte das mit dem upload klappen.
Unaufgeforderte Support PMs & Emails werden ignoriert

Immer erst die Boardsuche verwenden und gegebenenfalls einen neuen Threat eröffnen, wenn das Problem noch nicht behandelt wurde!

GerhardSt

Danke für deine Hilfe, werde ich heute abend mal versuchen.
Eine Frage habe ich dazu noch, die uid der upload.php gilt die für das Script oder für den Benutzer?
Oder einfacher muß ich pro Admin eine upload.php anlegen oder reicht eine für alle?

Danke, Gerhard