move_uploaded_file()不起作用

时间:2011-08-16 04:59:00

标签: php apache file-upload

我正在php中编写一个脚本,用于在服务器上上传文件。代码如下:

$target_path = "uploaded_images/";
$target_path = $target_path . basename( $_FILES['image']['name']); 
if(move_uploaded_file($_FILES['image']['tmp_name'], $target_path)) {

  echo "The file ".  basename( $_FILES['image']['name']). 
        " has been uploaded";
  } else{
  echo "There was an error uploading the file, please try again!";
}

但是函数move_uploaded_file()不起作用,它会出现以下错误:

Warning: move_uploaded_file(uploaded_images/Mordent.jpg) [function.move-uploaded-file]:  failed to open stream: Permission denied 


Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpOWVz7o' to 'uploaded_images/Mordent.jpg'

我已经检查了文件夹的所有权限,甚至关闭了php.ini中的安全模式。

2 个答案:

答案 0 :(得分:3)

此处不要使用相对路径名(uploaded_images/Mordent.jpg)。 PHP的工作目录(用于将相对路径转换为绝对路径)并不总是很明显。

如果您尝试将图片移动到的目录与脚本位于同一目录中,请定义$target_path,如:

$target_path = __DIR__ . '/uploaded_images/';

__DIR__部分为您提供当前脚本所在目录的绝对路径,然后将“相对”部分附加到该目录。

答案 1 :(得分:1)

您的代码非常好......只需更改您上传文件的目录的权限

即可

与0777类似,用于读写的所有权限 你可以手动完成或通过php

更改它