2

我有个问题。从几个小时开始,我试图让上传脚本工作。我还阅读了有关 stackoverflow 的其他一些问题,但没有任何帮助。webspace 允许 file_upload 并且文件的大小不会太大。移动下载的目录也存在。我的html代码是:

Upload: <input type="file" name="file">

我的PHP代码是:

if ($_FILES['file']['error'] == 0) {
    $tmp_name = $_FILES["file"]["tmp_name"];
    $name_file = $_FILES["file"]["name"];
    move_uploaded_file($tmp_name, "upload/" . $name_file);
}

我回显了 $_FILES 并且文件在那里并且没有错误。每次我尝试上传文件(我也尝试上传其他文件和文件类型)时 move_uploaded_file 返回 false。

编辑:该文件夹现在是可写的。

4

4 回答 4

4

好的,我解决了我的问题。我启用error_resporting()了,因为任何原因都没有设置权限。现在它们是 777,我可以移动文件。

于 2013-04-02T13:44:05.883 回答
3

通过设置权限 755,文件夹上传不会被其他人写入。您可以通过 chmod 命令设置权限至少 666,或者更好地为 apache 用户设置上传文件夹的所有权。

我像这样在Ubuntu上设置它

sudo chown www-data:www-data upload 
于 2013-03-30T19:02:55.530 回答
2

将文件夹权限设置upload666。这应该确保目录是正确可写的。

于 2013-03-30T18:58:24.333 回答
2

希望这可以帮助某人。

我遇到了同样的问题,我$_FILES['file']['tmp_name']有适当的回报而move_uploaded_file($_FILES['file']['tmp_name'],$destination_dir)没有回报。所以我运行了这个检查:

if(!is_writable($destination_dir)){ echo "error in dir"; }

并收到消息“目录中的错误”。连我$destination_dir的inmove_uploaded_file都设置为777,找了好久才找到这个答案。所以这两个命令解决了我的问题:

sudo chmod -R 777 Ad_images/
sudo chcon -R -t httpd_sys_rw_content_t Ad_images/

现在is_writable($destination_dir)返回1,上传成功。

TL;DR: Make sure your destination directory is writable for php.

于 2016-04-28T08:01:27.410 回答