2012-07-05 116 views
4

我已經寫了一個PHP文件,該文件會保存在服務器和部分代碼的JPEG文件被列爲如下:PHP編寫的二進制文件

//create folder if folder not exist 
if (!is_dir($save_path)){ 

    $old = umask(0); 
    $flag = @mkdir($save_path,0777); 
    umask($old); 

if(isset($flag)){ 
    $string = 'Folder Create Success!'."\n"; 
}else{ 
    $string= 'Folder Create Fail!'."\n"; 
} 
echo $string; 

}else{ 

    echo "Folder exist!!!!"; 

} 


//write the content to the server 
$base=$_REQUEST['image']; 
$binary=base64_decode($base); 
header('Content-Type: image/jpg; charset=utf-8'); 

if(!$file = fopen($path, 'wb')){ 

    echo 'Image upload Fail!'."\n"; 
    return; 
} 
else 
{ 

    fwrite($file, $binary); 
    fclose($file); 

} 

問題是,當我運行的代碼,如果文件夾不存在,它僅創建文件夾,但內容無法保存在文件夾中。錯誤信息是:

[Thu Jul 05 16:59:06 2012] [error] [client 10.95.61.220] PHP Warning:fopen(/ mnt/csis/upload/newphoto/others/12346_test/12346_test_2012-07 -05_others_abc.jpg):未能打開流:權限被拒絕在/var/www/html/upload_image.php在線57

但是,如果我再次運行代碼,由於該文件夾是在過去創建的,好好工作。內容可以保存在文件夾中......

任何我錯了?我試圖在網上找到答案,但仍無法解決問題。

任何人都可以幫助,非常感謝!

回答

0

我會嘗試改變文件夾的創建使用recursive flag

$flag = @mkdir($save_path . "/" . $file,0777,true); 
+0

遺憾地告訴你,結局都是一樣的...... – user1411475 2012-07-05 09:38:40

+0

你確定嗎?我看到你同時擁有'$ path'和'$ basepath' - 你可以'回顯'它們並顯示我嗎? – alfasin 2012-07-05 09:41:05

+0

如果它仍然不起作用,請在打開文件之前嘗試使用'chdir($ path);'。 – alfasin 2012-07-05 09:47:28