Warning: move_uploaded_file(): SAFE MODE Restriction in effect

O

orin35

Hallo liebe PHP Spezialisten,

ich bin Neuling im Bereich PHP und im Forum und bitte, mir kleine faut pas zu vergeben.

Ich habe ein kleines Problem. Ich habe ein Bannertausch Script übernommen und beim upload eines Banners erscheint diese Warnung:

Warning: move_uploaded_file(): SAFE MODE Restriction in effect. The script whose uid/gid is 506/506 is not allowed to access /home owned by uid/gid 0/0 in /home/bannerhost_de/www/client/uploadbanner.php on line 66

Bisher kenne ich das "SAFE MODE Restriction in effect." nicht. Kann mir jemand helfen ? Ich wäre wirklich überglücklich.
Ich füge auch gleich die uploadbanner.php bei. Die oben genannte Zeile 66 kennzeichne ich mit einem =====>> am linken Rand.
Vielen Dank.



Code:
<?
include("../config.php");
if($use_gzhandler==1){
ob_start("ob_gzhandler");
}
require_once('../lib/template_class.php');
include("../lang/client.php");
// Begin login stuff
$db=mysql_connect("$dbhost","$dbuser","$dbpass");
mysql_select_db($dbname,$db);
// snag and reassign session variables..
session_start();
$session=session_id();
$login=$_SESSION['login'];
$pass=$_SESSION['pass'];
$id=$_SESSION['id'];
$result = mysql_query("select * from banneruser where login='$login' AND pass='$pass'");
$get_userinfo=@mysql_fetch_array($result);
$id=$get_userinfo[id];
$login=$get_userinfo[login];
$pass=$get_userinfo[pass];
	if($login=="" AND $pass=="" OR $pass=="") {
include("../template/client_login_error.php");
session_destroy();
}else{
$path="$upload_path/";
$target=$_REQUEST['target'];
$get_count=mysql_query("select * from bannerurls where uid='$id'");
$found=@mysql_num_rows($get_count);
if(!$found){
$newcount=1;
$newfile="$id-$newcount";
}else{
$newcount=$found+1;
$newfile="$id-$newcount";
}
$filename="$path$newfile";
$bannerurl="$banner_dir_url/$newfile";
 
=======>> if(move_uploaded_file($_FILES['userfile']['tmp_name'], $filename)){
//validate the image...
$imagestuff = @getimagesize($filename);
$imagewidth = $imagestuff[0];
$imageheight = $imagestuff[1];
$error=0;
if($filename==''){
	$error = 1;
	$error_html .= "$LANG_err_badimage<br><br>\n";
}
if($imagewidth==''){
	$error = 1;
	$error_html .= "$LANG_err_badimage<br><br>\n";
}
if($imagewidth != $bannerwidth){
	$error=1;
	$error_html .= "$LANG_err_badwidth<br><br>\n";
}
if($imageheight != $bannerheight){
	$error=1;
	$error_html .= "$LANG_err_badheight<br><br>\n";
}
if(filesize($filename) > $max_filesize){
	$error=1;
	$error_html .= "$LANG_err_filesize<br><br>\n";
}
if(<A href="mailto:!$get_url=@fopen($target,"r">!$get_url=@fopen($target,"r")){
	$error = 1;
	$error_html .= "$LANG_err_invalidurl<br><br>\n";
}
	if($error=="1"){
	 unlink($filename);
	 $err="<br><font color=\"#FF0000\"><b>$LANG_rejected</b></font><blockquote>".$error_html."</blockquote>$LANG_back";
	 $page = new Page('../template/admin_addbanner_confirm.php');
	 $page->replace_tags(array(
	 'session' => "$session",
	 'baseurl' => "$baseurl",
	 'title' => "$exchangename - $LANG_upload_title",
	 'filesize' => "$max_filesize",
	 'shorttitle' => "$LANG_upload_title",
	 'message' => "$err",
	 'menu' => 'client_menuing.php',
	 'footer' => '../footer.php'));
	 $page->output();
	} else {
//-----------------------------------------------------------------------------------------------
	 mysql_query("insert into bannerurls values (NULL,'$bannerurl','$id')");
			 if ($approveafterupload == "Y")
			 {
			 mysql_query("update bannerstats set approved='0' where uid=$id");
			 } else {
				mysql_query("update bannerstats set approved='1' where uid=$id");
			 }
//-----------------------------------------------------------------------------------------------
		 include("../template/client_upload_success.php");
		 }
chmod($filename, 0644);
	//Redirect to 'Your banners' Page
header("Location: ".$baseurl."/admin/banners.php?SID=$session&uid=$uid");
}
}
 
?>

Gruß
orin35
 
In der Variable $upload_path scheint ein falscher Wert enthalten zu sein. Allerdings wird die Variable nicht im geposteten Script gesetzt. Ich vermute, dass das Setzen in der config.php erfolgt.

Dadurch wird versucht die hochzuladende Datei in ein Verzeichnis zu verschieben, das nicht dem selben Nutzer gehört, wie das ausgeführte Script.

Mehr Infos unter http://www.php-faq.de/q/q-konfiguration-safe-mode.html

Sven
 
Zurück