3

サーバーに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 警告: fopen(/mnt/csis/upload/newphoto/others/12346_test/12346_test_2012-07-05_others_abc.jpg): 開けませんでしたストリーム: 57 行目の /var/www/html/upload_image.php で許可が拒否されました

ただし、コードを再度実行すると、フォルダーは過去に作成されているため、正常に動作します。コンテンツはフォルダに保存でき……

何か間違っていますか?Webで答えを見つけようとしますが、それでも問題を解決できません。

誰でも助けてくれます、どうもありがとう!

4

1 に答える 1

1

再帰フラグを使用するようにフォルダーの作成を変更してみます。

$flag = @mkdir($save_path . "/" . $file,0777,true);
于 2012-07-05T09:34:11.177 に答える