为什么不是';我的php移动文件脚本是否实际移动了文件?

为什么不是';我的php移动文件脚本是否实际移动了文件?,php,html,file-upload,Php,Html,File Upload,我正在使用php将文件上载到服务器,虽然move_uploaded_file函数不返回任何错误,但文件不在目标文件夹中。正如您所看到的,我使用的是根目录的精确路径,并且上传的文件小于最大大小 $target = "/data/array1/users/ultimate/public_html/Uploads/2010/"; //Write the info to the bioHold xml file. $xml = new DOMDocument(); $xml->load('bi

我正在使用php将文件上载到服务器,虽然move_uploaded_file函数不返回任何错误,但文件不在目标文件夹中。正如您所看到的,我使用的是根目录的精确路径,并且上传的文件小于最大大小

$target = "/data/array1/users/ultimate/public_html/Uploads/2010/";  
//Write the info to the bioHold xml file.
$xml = new DOMDocument();
$xml->load('bioHold.xml');
$xml->formatOutput = true;
$root = $xml->firstChild;
$player = $xml->createElement("player");
$image = $xml->createElement("image");
$image->setAttribute("loc", $target.basename($_FILES['image']['name']));
$player->appendChild($image);
$name = $xml->createElement("name", $_POST['name']);
$player->appendChild($name);
$number = $xml->createElement("number", $_POST['number']);
$player->appendChild($number);
$ghettoYear = $xml->createElement("ghettoYear", $_POST['ghetto']);
$player->appendChild($ghettoYear);
$schoolYear = $xml->createElement("schoolYear", $_POST['school']);
$player->appendChild($schoolYear);
$bio = $xml->createElement("bio", $_POST['bio']);
$player->appendChild($bio);
$root->appendChild($player);
$xml->save("bioHold.xml");
//Save the image to the server.
$target = $target.basename($_FILES['image']['name']);
if(is_uploaded_file($_FILES['image']['tmp_name']))
    echo 'It is a file <br />';
if(!(move_uploaded_file($_FILES['image']['tmp_name'], $target))) {
    echo $_FILES['image']['error']."<br />";
}
else {
    echo $_FILES['image']['error']."<br />";
    echo $target;   
}
$target=“/data/array1/users/ultimate/public_html/Uploads/2010/”;
//将信息写入bioHold xml文件。
$xml=newdomdocument();
$xml->load('bioHold.xml');
$xml->formatOutput=true;
$root=$xml->firstChild;
$player=$xml->createElement(“player”);
$image=$xml->createElement(“图像”);
$image->setAttribute(“loc”,$target.basename($_文件['image']['name']);
$player->appendChild($image);
$name=$xml->createElement(“name”,$_POST['name']);
$player->appendChild($name);
$number=$xml->createElement(“number”,$_POST['number']);
$player->appendChild($number);
$ghettoYear=$xml->createElement(“ghettoYear”,$_POST['ghetto']);
$player->appendChild(贫民窟年);
$schoolYear=$xml->createElement(“schoolYear”,$_POST['school']);
$player->appendChild(学年);
$bio=$xml->createElement(“bio”,$\u POST['bio']);
$player->appendChild($bio);
$root->appendChild($player);
$xml->save(“bioHold.xml”);
//将映像保存到服务器。
$target=$target.basename($_文件['image']['name']);
如果(是上传的文件($\u文件['image']['tmp\u名称]]))
echo“它是一个文件
”; 如果(!(移动上传的文件($文件['image']['tmp\u name'],$target))){ echo$_文件['image']['error']。“
”; } 否则{ echo$_文件['image']['error']。“
”; echo$target; }
感谢您的帮助


Eric R.

您需要确保无论是谁托管您的页面,都配置了允许您上载和移动文件的设置。由于存在安全风险,大多数将禁用这些功能

只需向他们发送电子邮件并询问他们是否已启用


希望这对您有所帮助。

您对is\u uploaded\u文件和move\u uploaded\u文件的调用各不相同。对于is_上传的文件,您正在检查“名称”,对于move_上传的文件,您正在传递“tmp_名称”。尝试将您的呼叫更改为“移动上传的文件”以使用“名称”

最像这是一个权限问题。我假设您没有任何类型的直接shell访问来直接检查这些内容,因此下面介绍如何在脚本中执行此操作:

检查
$target
目录是否存在:

$target = '/data/etc....';
if (!is_dir($target)) {
    die("Directory $target is not a directory");
}
检查它是否可写:

if (!is_writable($target)) {
    die("Directory $target is not writeable");
}
检查完整目标文件名是否存在/是否可写-可能存在但无法覆盖:

 $target = $target . basename($_FILES['image']['name']);
 if (!is_writeable($target)) {
     die("File $target isn't writeable");
 }
除此之外:

if(!(move_uploaded_file($_FILES['image']['tmp_name'], $target))) {
    echo $_FILES['image']['error']."<br />";
}

脚本(我的意思是$target…等)的结果是什么?您的脚本对文件夹有写权限吗?它有写权限,错误输出0,$target输出路径和正确的文件名。您是否在本地计算机上测试了脚本。从去年起,我已能够上载到服务器。我将与他们联系查看。
move\u uploaded\u file()
需要服务器端临时名称作为源,它位于
tmp\u name
中。将其更改为
name
是错误的,因为这是客户端的原始文件名,这将导致移动失败,并且“没有这样的文件”。因此这基本上是正确的。问题说明:“上传”中的文件夹“2010”是可写的,所以您的所有检查都顺利通过。但是,上载本身是不可写的。做这些检查让我想到了这一点。所以,当我上传的文件可写时,它工作得非常好。谢谢你,马克。
if ($_FILES['images']['error'] === UPLOAD_ERR_OK) {
    // file was properly uploaded
    if (!is_uploaded_File(...)) {
        die("Something done goofed - not uploaded file");
    }
    if (!move_uploaded_file(...)) {
        echo "Couldn't move file, possible diagnostic information:"
        print_r(error_get_last());
        die();

    }
} else {
    die("Upload failed with error {$_FILES['images']['error']}");
}