1

フラッシュを介してウェブカメラで写真を撮り、後で操作するためにデータをサーバーに投稿しています。

共有ホスティングからAmazonのEC2インスタンス(サーバー)に切り替えたところです。

このエラーが発生します:

警告:file_put_contents(uploads / 20120615104908.jpg):ストリームを開くことができませんでした:4行目の/var/www/html/addons/webcam/capture.phpでアクセスが拒否されましたエラー:20120615104908.jpgへのデータの書き込みに失敗しました。アクセス許可を確認してください

これは失敗しているコードです。uploads /のchmodを0777に変更すると機能しますが、安全ではないのではないかと思います。

(このコードを再検討するためにこのバグのために最近時間が取れたばかりの不十分な記述をお詫びします、私はそれをより良く形成することを約束します:D)

$filename = date('YmdHis') . '.jpg';
$imageData = file_get_contents('php://input');
$result = file_put_contents( 'uploads/' . $filename, $imageData );

if (!$result) {
    print "ERROR: Failed to write data to $filename, check permissions\n";
    exit();
}

$url = $filename;
$_SESSION['imageName'] = $filename;
print "$url\n";
4

1 に答える 1

1

はい、それは本当に危険です。の所有者を確認する必要がありuploads/ます。PHPスクリプト(wwwdataまたはapacheなど)を実行するのと同じユーザーである必要があります。

$ ls -ld upload
$ # oh shi...
$ chown wwwdata upload
$ chmod 640 upload

それで全部です!

于 2012-06-15T18:22:33.240 に答える