我有PHP脚本(testupload.php):
<?php
error_reporting(E_ALL);
ini_set('log_errors',1);
ini_set('error_log','/root/work/inputs/log_file');
$target_path = "/work/inputs";
$target_path = $target_path . basename( $_FILES['frag3']['name']);
echo "Received File: " . $_FILES['frag3']['name'] . " and moving it to " . $target_path . "<br>";
if(move_uploaded_file($_FILES['frag3']['name'], $target_path)) {
echo "The file ". basename( $_FILES['frag3']['name']) . " has been uploaded";
} else{
echo "There was an error uploading the file, please try again!";
}
?>
要调用它的HTML文件:
<html xmlns="http://www.w3.org/1999/xhtml">
<body>
<form action = "http://localhost:8081/testupload.php" method="post" enctype="multipart/form-data">
<span>Value : </span><input type="text" name="Value" value="Hello world"/><br />
<span>Fragment File : </span><input type="file" name="frag3" /><br />
<input type="submit" value="Send"/>
</form>
</body>
</html>
然而,我不断收到回应:
的 There was an error uploading the file, please try again!
很明显move_uploaded_file()
没有正常运作。另外,它实际上并没有移动文件。但是,我似乎无法诊断出这个问题。
我的第一个想法是该目录不可写。但我对该文件夹的权限为drwxrwxrwx
(由ls -l
确定)
另外,该行: 函数ini_set( '的error_log', '/根/工作/输入/ LOG_FILE');
似乎没有将日志文件写入该位置。
有没有人有这方面的经验?我该如何诊断这里发生的事情?
我在这里几乎不知所措,所以任何帮助都会非常感激。
我使用的是OpenSUSE 11.2,Apache 2.2和PHP 5.3。
非常感谢, 布雷特
答案 0 :(得分:3)
你应该move_uploaded_file($_FILES['frag3']['tmp_name'], $target_path)
答案 1 :(得分:0)
以下是要检查的内容:
通过修改upload_max_filesize
或post_max_size
文件中的.htaccess
和php.ini
,确保无法达到文件上传和发布限制。如果您有错误报告,则应在到达时看到错误。请参阅:http://drupal.org/node/97193
检查文件上传错误代码。请参阅以下文档:http://www.php.net/manual/en/features.file-upload.errors.php
确保您的memory_limit
尚未到达。同样,启用错误日志记录后,您应该收到有关此错误消息的错误消息。 http://drupal.org/node/207036
检查PHP的常见陷阱文档,确保没有任何帮助:http://www.php.net/manual/en/features.file-upload.common-pitfalls.php
如果这些都没有帮助,请启用错误报告并发布您收到的内容,以便我们根据您的情况更好地定制答案。
答案 2 :(得分:0)
php将文件存储在临时名称的服务器中 你可以通过
获得 $_FILES['frag3']['tmp_name']
而不是$_FILES['frag3']['name']
答案 3 :(得分:0)
我相信它是move_uploaded_file($_FILES['frag3']['tmp_name'], $target_path)
,因为文件实际上并没有按照它们上传的名称存储(当然,你可以通过设置它们的目标路径来重命名它们)。