我的php程序没有将上传的图像移动到目录(ubuntu)

My php program is not moving uploaded image to a directory (ubuntu)

我是PHP的开始。

我已经尝试了几个小时将上传的图像移动到一个目录,但没有成功。我已经阅读过关于这个主题的其他问题,但我无法解决这个问题:

1)我已经检查了目录是否存在(见下面的输出);

2)目录似乎是不可写的,但我不仅试图将图像保存在一种系统目录中,而且保存在我的计算机的一个简单目录中。

3)图像上传正确。

4)我已经使用了"sudo chmod-r 775/home/daniel/netbeansprojects/newphpproject/photos",但这不应该是问题,因为这不是系统目录!

我不知道发生了什么。

丹尼尔

请参阅下面的代码:

上传文件

1
2
3
4
5
6
7
8
9
10
11
<html>
    <body>
         Upload your photo.
        <form action="moveImage.php" method="post"
              enctype="multipart/form-data">
            <label for="file">Filename:</label>
            <input type="file" name="file" id="file">
            <input type="submit" name="submit" value="Submit">
        </form>
    </body>
</html>

移动图像

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
    <?php
    if ($_FILES["file"]["error"] > 0) {
        echo"Error:" . $_FILES["file"]["error"] ."";
    } else {

        //$upload_dir = $_SERVER['DOCUMENT_ROOT'] ."/photos/";
        //$upload_dir = dirname(__FILE__) ."/photos/";
        $upload_dir ="/home/daniel/NetBeansProjects/NewPhpProject"."/photos/";
        echo"upload_dir:" . $upload_dir ."";
        if (file_exists($upload_dir)) {
            if (is_writable($upload_dir)) {
                $target = $upload_dir; //"dirname(__FILE__)" ."photos/";
                $target = $target . basename($_FILES['file']['name']);
                $moved = move_uploaded_file($_FILES['file']['name'],"$target");
            } else {
                echo 'Upload directory is not writable';
            }
        } else {
            echo 'Upload directory does not exist.';
        }
        echo $target ."";
    //  echo dirname(__FILE__)."";
    echo"Upload:" . $_FILES["file"]["name"] ."";
    echo"Type:" . $_FILES["file"]["type"] ."";
    echo"Size:" . ($_FILES["file"]["size"] / 1024) ." kB";
    echo"Stored in:" . $_FILES["file"]["tmp_name"];
}
?>

输出:

上传目录:home/daniel/netbeansprojects/newphpproject/photos/

上载目录不可写

上传:fotocaju.jpeg

类型:image/jpeg

大小:0.666015625 KB

存储在:/tmp/phpmtjwm中


您需要更改/home/daniel/NetBeansProjects/NewPhpProject/photos/的目录权限。为此,您将使用chmod命令。

美元:chmod +w /home/daniel/NetBeansProjects/NewPhpProject/photos/


php.net站点注释可写:

1
Note: The results of this function are cached. See clearstatcache() for more details.

试试看。在更改文件夹的权限之前,可能会将结果与结果一起缓存。


问题可能是,通往/home/daniel/NetBeansProjects/NewPhpProject/photos/的每一个目录都必须由apache编写。

由于更改主目录的权限通常不是一个好主意,因此您应该在Apache可以访问的某个位置建立一个符号链接,该位置在public_html之外(如/var/www指向您的目标目录),该目录应该具有Apache用户的正确权限。