1

我正在通过闪存使用网络摄像头拍照并将数据发布到服务器以供以后操作。

刚刚从共享主机切换到亚马逊的 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 回答