我正在通过闪光灯使用网络摄像头拍照并将数据发布到服务器以便以后操作。
刚从共享主机切换到亚马逊的EC2实例(服务器)。
我收到此错误:
警告:file_put_contents(uploads / 20120615104908.jpg):无法打开流:第4行/var/www/html/addons/webcam/capture.php中的权限被拒绝错误:无法将数据写入20120615104908.jpg,检查权限
这是失败的代码。 当我将上传的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";
答案 0 :(得分:1)
是的,这真的不安全。
您需要检查uploads/
的所有者。它必须是运行PHP脚本的同一用户(wwwdata或apache或类似的东西)。
$ ls -ld upload
$ # oh shi...
$ chown wwwdata upload
$ chmod 640 upload
这就是全部!