PHP:上传麻烦

时间:2012-01-03 01:50:25

标签: php upload

我正在制作图片上传器,但我遇到了2个错误。这是:

Warning: move_uploaded_file(upload/Corgi 007.jpg) [function.move-uploaded-file]: failed to open stream: No such file or directory in /home/stationr/public_html/admin/doupload.php on line 12

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/chroot/tmp/phpMvRSbS' to 'upload/Corgi 007.jpg' in /home/stationr/public_html/admin/doupload.php on line 12

当我调用move_uploaded_file()方法时发生错误。这是我的代码(请注意,这没有错误检查,所以它只是上传的内容)。

    <?php
error_reporting(E_ALL);
error_reporting(-1);
ini_set('error_reporting', E_ALL);

$filename = $_FILES["file"]["name"];
$filesize = $_FILES["file"]["size"];

move_uploaded_file($_FILES["file"]["tmp_name"],"upload/$filename");

?>

1 个答案:

答案 0 :(得分:1)

您无法检查上传是否成功:

if ($_FILES['file']['error'] === UPLOAD_ERR_OK) {
   move file ...
} else {
   die("Upload failed with error code " . $_FILES['file']['error']);
}

错误代码记录在此处:http://www.php.net/manual/en/features.file-upload.errors.php

同样,在脚本的当前工作目录中是否有“upload”子目录? Web服务器进程是否具有该目录的写权限?

作为一个主要的安全漏洞,盲目地使用上传的['name']参数作为目标文件名,允许恶意用户在服务器上的任何文件上乱写。永远不要盲目地使用该文件名。如果上传文件名是(例如)../../../../../../etc/passwd,则您现在允许某人替换您的系统密码文件。