0

こんにちは私は私のAndroidアプリケーションから私のサーバーに画像ファイルをアップロードしようとしています。特定のディレクトリ(写真)ではなく、サーバーにファイルをアップロードできないようです。picsのサブディレクトリにアップロードしようとすると、fopenはfalseを返します。これが私のphpファイルです

<?php
$base=$_REQUEST['image'];
$picname=$_REQUEST['picname'];
$binary=base64_decode($base);

header('Content-Type: bitmap; charset=utf-8');

//$shapicname = SHA1($picname);

$dir1 = 'pics/'.substr($picname,0,2);
$dir2 = substr($picname,2,2);

$targetfilename1 = $dir1;
$targetfilename2 =  $dir2;

if (!file_exists($dir1)) {
    mkdir($dir1); //create the directory
    chmod($targetfilename1, 0777); //make it writable
}

//chdir($dir1);

$file = fopen('/var/www/html/'.$dir1.'/'.$picname, 'wb');


if (!$file) {
   echo "false ".$dir1.$picname;
}
else {
   $fwrite = fwrite($file,$binary);

   fclose($file);

   echo "uploaded".$fwrite.$file;
}
?>

picsフォルダーはapacheユーザーが所有し、0777のアクセス許可があります

何か案は?

PHPエラーログを投稿しています

[2012年8月2日木曜日18:32:34][エラー][クライアントxx.xx.Xxx.xx]PHP警告:fopen():セーフモード制限が有効です。uid / gidが0/0のスクリプトは、23行目の/var/www/html/uploadshaimage.phpにあるuid /gid48/48が所有する/var/ www / html / pics/53にアクセスできません[ThuAug 02 18:32:34 2012][エラー][クライアントxx.xx.Xxx.xx]PHP警告:fopen(/var/www/html/pics/53/5344.jpg):ストリームを開くことができませんでした:そのようなファイルはありませんまたは23行目の/var/www/html/uploadshaimage.phpのディレクトリ

4

3 に答える 3

1
  1. フォルダーの許可
  2. PHP.ini設定-URLを開くかファイル機能を有効にしないでください。
  3. 間違ったパス-ファイルまたはパスが正しいか、存在するかどうかを確認します。
于 2012-08-02T16:31:22.617 に答える
0

OK、2つのソリューションが機能していることがわかりました

A. php.iniでsafe_modeをオフにします(少し危険です!)

B.サブディレクトリに再帰的にpicsディレクトリのパーミッションを付与します(gidが問題でした!)

助けてくれたみんなに感謝します

于 2012-08-03T08:50:33.263 に答える
0

あなたが知っている、私は仕方がないのだろうか、あなたは道が本当にあると確信しています'/var/www/html/'.$dir1.'/'.$picnameか?の相対パスを使用しています$dir1が、の絶対パスを使用していますfopen$dir1最初から絶対パスに設定するとどうなりますか?


FWIW、出力する内容に対して間違ったContent-Typeもあります。

于 2012-08-02T17:17:04.503 に答える