我正在使用 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