move_upload0ed_file()函数返回參数较少。可是引起出错的原因却有非常多,所以对于刚開始学习的人难免会遇到问题。

出错原因大概有下面三点:

1.假设检測到文件不是来自post上传。这个文件不会运行cp工作;

2.目的路径找不到。

3.目的路径权限非运行进程课读写(这条是本人下午发现的);

首先看看这几行代码,了解一下环境:

if(move_uploaded_file($fileInfo['tmp_name'], $destination))

{
   $mes="文件上传成功";
}

else

{

            $mes="文件移动失败";
}


结果返回 文件移动失败


今天下午查找了不少资料,大概有下面几种说法:

1.应该用绝对路径,本人的參数 $destination 值为 uploads,加上绝对路径为 /home/llawlite/imooc/shopImoc/test/uploads

       经验证不是这个问题。

2.应该在路径前加上 ROOT, $destination=ROOT.$destination; 经验证无效;

最后。仅仅能自己摸索,发现这是一个LINUX文件权限的问题。

首先。在脚本里post过来的文件放在了暂时文件夹里(tmp_dir),然后复制到目的路径。

假设目的路径没有写文件的权限,那么函数的运行是会出错的。



今天下午做了例如以下尝试。首先把目的路径更改为/tmp下 $destination="/tmp".$fileInfo['name'],结果函数成功运行。

经比較发现/tmp的权限是 drwxrwxrwx 。而我的 /home 权限为 drwxr-xr-x 。问题一目了然。


以下改动/home的权限 chmod -R 777 /home (对整个文件夹以及子文件夹全部文件更改了权限)。


再把路径改为原来的路径,经验证问题已经解决。