semteX
begehrt die rostschaufel
|
PHP wirft folgende Meldung: Warning: mkdir(): SAFE MODE Restriction in effect. The script whose uid is 66995 is not allowed to access dienstplaene/2007 owned by uid 60001 in /www/salzburg/zivi/upload.php on line 14 der Befehl: ....
if(!is_dir("dienstplaene/".$_POST["jahr"])) {
$chck=mkdir("dienstplaene/".$_POST["jahr"]);
}
$chck=mkdir("dienstplaene/".$_POST["jahr"]."/".$_POST["monat"]); <= line 14
if($chck) {
echo "<div class='text'>Ordner erfolgreich erstellt</div>";
}
der 1. ordner wird aber erstellt. OS: (laut phpinfo) System SunOS www 5.9 Generic_112233-08 sun4u Build Date Feb 28 2005 09:15:06 webspace ist übrigends bei salzburg online. vielen donk. semtex
Bearbeitet von semteX am 24.03.2005, 09:56
|
COLOSSUS
AdministratorGNUltra
|
Steht doch schon da - Safe Mode Restriction, daran ist das OS nicht (alleine) schuld. SunOS ist btw nicht Linux.
|
semteX
begehrt die rostschaufel
|
Steht doch schon da - Safe Mode Restriction, daran ist das OS nicht (alleine) schuld.
Danke wusste ich vorher auch schon , löst aber mein problem ned
SunOS ist btw nicht Linux. Mein fehler, zuerst geschrieben und dann erst in der phpinfo nachgeschaut.
|
mat
AdministratorLegends never die
|
mach mal ein chmod mit param 0777 beim 1. erstellten verz.
|
semteX
begehrt die rostschaufel
|
danke fürn tipp, mach ich morgen mein zivikollege ist scho am schlafn und ich will ned den lapi herumzahn. code also so: $chck=mkdir("dienstplaene/".$_POST["jahr"], "0777");
Und WÜRDE SICH BITTE ENDLICH JEMAND IM BEREICH ZELL AM SEE / SCHÜTTDORF WER WEHTUN? ICH FADISIER MICH JETZT SCHON SEIT 3 TAGEN
|
semteX
begehrt die rostschaufel
|
mat das half leider nix :/ same error.
|
kleinerChemiker
Here to stay
|
ich bin mir nicht wirklich sicher, da ich safemode eigentlich nicht verwende. aber es gibt für safe mopde doch in der ini eine einstellung, wo man nen pfad angeben kann, in dem man normal arbeiten kann, oder irr ich da?safe_mode_exec_dir oder open_basedir?
Bearbeitet von kleinerChemiker am 24.03.2005, 10:49
|
semteX
begehrt die rostschaufel
|
wobei -> no access to ini for me :/ wobei das was mich da so irritiert ist der fakt, dass der erste ordner problemlos erstellt werden kann, beim 2. ordner aber nix mehr geht. obwohl der ordner mit 777 ge CHmodet sein müsste. ----------------------- SOLVED Nach intensivstem gugln stellte sich heraus, dass beim SAFE Mode kein "unterordner" von php erzeugt werden kann. der "oberordner" muss vom FTP client kommen sonst geht nix. work around => ftp Connection. function FtpMkdir($path, $newDir, $chmod=" 777 ") {
$server='www.myserver.at'; // ftp server
$connection = ftp_connect($server); // connection
// login to ftp server
$user = "ftpusername";
$pass = "password";
$result = ftp_login($connection, $user, $pass); // check if connection was made
if ((!$connection) || (!$result)) {
return false;
exit();
} else {
ftp_chdir($connection, $path); // go to destination dir
if(ftp_mkdir($connection,$newDir)) { // create directory
ftp_site($connection, "CHMOD".$chmod.$newDir);
return $newDir;
} else {
return false;
}
ftp_close($connection); // close connection
}
Bearbeitet von semteX am 30.03.2005, 09:53
|
atrox
in fairy dust... I trust!
|
Außerdem ist es eher egal das FF mehr Sicherheitslücken hat, da es wenig Gegener hat wie der IE von MS...
if (!preg_match("/^[0-9]+$/",$_POST["jahr"])) die("someone is playing nasty tricks on me");
|
semteX
begehrt die rostschaufel
|
if (!preg_match("/^[0-9]+$/",$_POST["jahr"])) die("someone is playing nasty tricks on me"); thx, das ganze ist zwar eh htaccess geschützt aber schaden tuts nie.
|
Jehul
Big d00d
|
lies mal die php documentation für safemode. unter safemode darfst du nur auf verzeichnisse zugreiffen, welche auch die userid (respektive gruppenid) des ausgeführten scripts haben. d.h. userid des auszuführenden scripts = 66995 (wahrscheinlich dein ftp-user) von dir erstellte verzeichnisse werden aber vom apache aus erstellt (wahrscheinlich user id 60001). somit darfst du keine files/ordner in dein selbst erstelltes verzeichnis schreiben. ist ein gängiges problem bei safemode. um das zu umgehen müsstest den owner des verzeichnisses ändern: etwas wie if(!is_dir("dienstplaene/".$_POST["jahr"])) {
$chck=mkdir("dienstplaene/".$_POST["jahr"]);
system("chown user.gruppe dienstplaene/".$_POST["jahr"]);
}
das geht natürlich nur, wenn der system befehl nicht gesperrt ist. EDIT: @semtex: hab deinen edit nicht gelesen aber der ftp workaround ist natürlich genial. aber kein vernünftiger programmier stiel :>
Bearbeitet von Jehul am 28.03.2005, 23:12
|
watchout
Legendundead
|
lies mal die php documentation für safemode. unter safemode darfst du nur auf verzeichnisse zugreiffen, welche auch die userid (respektive gruppenid) des ausgeführten scripts haben.
d.h. userid des auszuführenden scripts = 66995 (wahrscheinlich dein ftp-user) von dir erstellte verzeichnisse werden aber vom apache aus erstellt (wahrscheinlich user id 60001). somit darfst du keine files/ordner in dein selbst erstelltes verzeichnis schreiben. ist ein gängiges problem bei safemode.
um das zu umgehen müsstest den owner des verzeichnisses ändern:
etwas wie
if(!is_dir("dienstplaene/".$_POST["jahr"])) {
$chck=mkdir("dienstplaene/".$_POST["jahr"]);
system("chown user.gruppe dienstplaene/".$_POST["jahr"]);
}
das geht natürlich nur, wenn der system befehl nicht gesperrt ist.
EDIT: @semtex: hab deinen edit nicht gelesen aber der ftp workaround ist natürlich genial. aber kein vernünftiger programmier stiel :> führst du all deine Scripts als root aus?
|
Jehul
Big d00d
|
@watchout: du meinst wegen chown? ich habs zwar nicht getestet. aber des wär mein lösungsansatz gewesen im google hab ich auch noch leute gefunden, die mittels cronjob alle 5 mins über die ordner mit chown drüberfahren ;>
|
watchout
Legendundead
|
@watchout: du meinst wegen chown? ich habs zwar nicht getestet. aber des wär mein lösungsansatz gewesen
im google hab ich auch noch leute gefunden, die mittels cronjob alle 5 mins über die ordner mit chown drüberfahren ;> Also, php würd ich aber trotzdem auf keinen Fall als root ausführen... Da find ich den ftp-Ansatz noch am besten... Ausser natürlich php unter diesem User auszuführen, wie ja auch der safemode gedacht ist. Das ist daher ein eindeutiger Pfusch vom Provider, und dem hätt' ich schon mal paar "nette" E-Mails geschickt deswegen...
|
semteX
begehrt die rostschaufel
|
Also, php würd ich aber trotzdem auf keinen Fall als root ausführen...
Da find ich den ftp-Ansatz noch am besten... Ausser natürlich php unter diesem User auszuführen, wie ja auch der safemode gedacht ist. Das ist daher ein eindeutiger Pfusch vom Provider, und dem hätt' ich schon mal paar "nette" E-Mails geschickt deswegen... hm. jo das könnt ich natürlich auch noch tun. das mitm ftp ist zwar so ne lösung die ganz fein funkt aber wenn wer mal das passwort ändert ist schicht im schacht.
|