我是Php的开始。
我已经尝试了几个小时将上传的图片移动到目录但没有成功。我已经阅读了有关该主题的其他问题,但我无法解决问题:
1)我已经检查了目录是否存在(参见下面的输出);
2)似乎目录不可写,但我不仅试图将图像保存在一种系统目录中,而且还保存在我计算机的一个简单目录中。
3)图像似乎正确上传。
4)我已经使用过“sudo chmod -R 775 / home / daniel / NetBeansProjects / NewPhpProject / photos”,但这应该不是问题,因为这不是系统目录!
我不知道发生了什么。
丹尼尔
请参阅下面的代码:
uploadImage.php
<html>
<body>
<h2> Upload your photo. </h2>
<form action="moveImage.php" method="post"
enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file"><br>
<input type="submit" name="submit" value="Submit">
</form>
</body>
</html>
movingImage.php
<?php
if ($_FILES["file"]["error"] > 0) {
echo "Error: " . $_FILES["file"]["error"] . "<br>";
} else {
//$upload_dir = $_SERVER['DOCUMENT_ROOT'] . "/photos/";
//$upload_dir = dirname(__FILE__) . "/photos/";
$upload_dir ="/home/daniel/NetBeansProjects/NewPhpProject". "/photos/";
echo "upload_dir: " . $upload_dir . "<br>";
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<br>';
}
} else {
echo 'Upload directory does not exist.<br>';
}
echo $target . "<br>";
// echo dirname(__FILE__)."<br>";
echo "Upload: " . $_FILES["file"]["name"] . "<br>";
echo "Type: " . $_FILES["file"]["type"] . "<br>";
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
echo "Stored in: " . $_FILES["file"]["tmp_name"];
}
?>
输出:
upload_dir:/ home / daniel / NetBeansProjects / NewPhpProject / photos /
上传目录不可写
上传:FotoCaju.jpeg
输入:image / jpeg
大小:0.666015625 kB
存储于:/ tmp / phpmTJWMi
答案 0 :(得分:4)
您需要更改/home/daniel/NetBeansProjects/NewPhpProject/photos/
的目录权限。为此,您将使用chmod命令。
$:chmod +w /home/daniel/NetBeansProjects/NewPhpProject/photos/
答案 1 :(得分:1)
PHP.net网站评论is_writable:
Note: The results of this function are cached. See clearstatcache() for more details.
试试吧。在更改文件夹的权限之前,可能会使用结果缓存结果。
答案 2 :(得分:0)
问题可能是前往/home/daniel/NetBeansProjects/NewPhpProject/photos/
的每个目录也必须是Apache可写的。
由于更改主目录的权限通常不是一个好主意,因此您应该在public_html
之外的某个地方symbolic link创建一个{{3}}(如/var/www
)指向目标目录,该目录应具有Apache用户的正确权限。