move_uploaded_file(): 无法将'/tmp/phpiS3dQA'移动到'/var/www/html/mysite/uploads/PNGWallpaper.png'

4

我正在使用Fedora 16操作系统,配备PHP5.x和Apach2.x。

$target_path = "/var/www/html/mysite/uploads/";
$target_path = $target_path . basename( $_FILES['photo_video']['name']); 
if(move_uploaded_file($_FILES['photo_video']['tmp_name'], $target_path)) {
    echo "The file ".  basename( $_FILES['photo_video']['name']). 
    " has been uploaded";
} else{
    echo "There was an error uploading the file, please try again!";
}

当我尝试上传文件时,总是收到以下信息:

警告:move_uploaded_file(/var/www/html/mysite/uploads/PNGWallpaper.png):无法打开流:权限被拒绝(在/var/www/html/mysite/modules/content/cj_c.php的第44行)调用堆栈:0.0002 132524 1. {main}() /var/www/html/mysite/index.php:0 0.0016 153684 2. include_once('/var/www/html/mysite/modules/content/cj_c.php') /var/www/html/mysite/index.php:36 0.0022 160500 3. move_uploaded_file() /var/www/html/mysite/modules/content/cj_c.php:44 警告:move_uploaded_file():无法将'/tmp/phpiS3dQA'移动到'/var/www/html/mysite/uploads/PNGWallpaper.png'(在/var/www/html/mysite/modules/content/cj_c.php的第44行)调用堆栈:0.0002 132524 1. {main}() /var/www/html/mysite/index.php:0 0.0016 153684 2. include_once('/var/www/html/mysite/modules/content/cj_c.php') /var/www/html/mysite/index.php:36 0.0022 160500 3. move_uploaded_file() /var/www/html/mysite/modules/content/cj_c.php:44 上传文件时出错,请重试!

文件或文件夹权限:
drwxrwxrwx. 465 root root 36864 Apr  6 23:20 tmp
drwxrwxrwx. 2 knel knel 4096 Apr  6 22:47 uploads

php.ini

file_uploads = On
max_file_uploads = 20

检查 PHP 运行的用户

php> echo exec('whoami');
knel

谁能给我提供解决方案?

文件PNGWallpaper.png是否已经存在于uploads目录中? - Tim
不,文件还没有出现,我将要上传它。 - tree em
我认为Web服务器没有权限将文件重新上传到此目录。可能您在路径中打错了字? - Tim
请问您能否提供更多详细信息呢?谢谢。 - tree em
2个回答

3

权限被拒绝指的是PHP运行的用户没有对目标路径(/var/www/html/mysite/uploads/)中一个或多个目录的写入权限。

您可以使用此工具来检查完整路径上至目标目录的权限。


php> echo exec('whoami'); knel - tree em
drwxrwxrwx. 2 knel knel 4096 Apr 6 22:47 uploads - tree em
你有更多的想法吗?谢谢。 - tree em
1
是的,您的上传目录归您的用户所有... 但是,如果“uploads”目录上面的某个目录对于尝试写入的用户没有+x权限,则会因权限被拒绝而失败。请再次检查。 - ivans

1
我遇到了同样的问题。 我的解决方法是:确保目标文件夹具有“x”权限(700),而不仅仅是写入权限。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接