我使用move_uploaded_file函数上传文件。文件被移动到正确的目录中,我看到它的物理存在,但我无法打开它们。我收到“拒绝访问”错误。我查看了文件的属性,发现它没有所有者。
顺便说一句,我在Windows 2008上运行IIS。
我检查权限,一切都设置正确。运行Web服务的用户具有完全管理权限。
另外,我用copy()替换了move_uploaded_file函数,我能够访问该文件。它还有以服务器身份运行服务器的用户。
究竟什么可能是错的?
谢谢,感谢您的帮助。
更新 移动文件后,我尝试使用chmod($ filename,0655)设置权限,但这也不起作用。
更新2(解决方案): 好吧,伙计们,我明白了。 系统管理员没有设置upload_tmp_dir。一旦我们添加了路径,它就工作了。
源代码:
// Check if file was uploaded
if(isset($_FILES['formname']) && $_FILES['formname']['size'] > 8){
$displayName = $_FILES['formname']['name'];
$displayName = unixfilename(basename($displayName));
$tempName = $_FILES['formname']['tmp_name'];
$filename = $_FILES['formname']['name'];
$fileType = substr($filename, strrpos($filename,".")+1);
$filename = substr($filename,0,strrpos($filename,".")) . date("_Ymd_His") . ".$fileType"; // Add unique identifier
$filename = unixfilename(basename($filename));
$destinationPath = "xx\yy\zz\\";
// Check if the file is of a valid type
if($fileType == "txt"){
// Check if file exists in processor folder
if(!file_exists($destinationPath.$filename)){
if(move_uploaded_file($tempName,$destinationPath.$filename)){
if(file_exists($destinationPath.$filename)){
// success
答案 0 :(得分:0)
答案 1 :(得分:0)
检查实际上传的用户是谁
echo exec('whoami');
答案 2 :(得分:0)
除了在php.ini文件中设置upload_tmp_dir
之外,请确保您设置的目录可由PHP写入。
如果您在IIS中使用PHP管理器,它默认为upload_tmp_dir
到C:\Windows\Temp
,默认情况下PHP进程无法为我写入。