尝试上传PHP文件时出错
我是php页面,一切正常,直到今天早上。现在该页面没有上传任何选定的文件。所有这一切我不断收到如下错误信息:尝试上传PHP文件时出错
警告:move_uploaded_file(上传/ BrainStream_2009_06_25_23041.zip)function.move上传文件]:未能打开流:C中没有这样的文件或目录: \ xampp \ htdocs \ vectorization \ admin \ jobs_edit.php on line 146
Warning:move_uploaded_file()[function.move-uploaded-file]:无法移动'C:\ Documents and Settings \ Admin \ Local Settings \ Temp \ php1B2.tmp'到第146行的C:\ xampp \ htdocs \ vectorization \ admin \ jobs_edit.php中'upload/BrainStream_2009_06_25_23041.zip' 文件无法上传。请选择一个有效的文件。 文件名:BrainStream.zip
我已经写了下面的代码:
$uplfile = $_FILES['uploadfile']['name'];
$upltmp = $_FILES["uploadfile"]["tmp_name"];
if(!empty($uplfile))
{
$ext = explode(".", $uplfile);
$upload_date = date("Y_m_d"); //use this variable to change file name to avoid conflict with same name files
$upload_dir = "upload/";
$file_name=$ext[0]."_".$upload_date."_".rand(0, getrandmax()).".".$ext[1];
(move_uploaded_file($upltmp,$upload_dir.$file_name))
}
我有XAMPP堆叠安装我的电脑,其运行的WinXP上,有3 GB RAM和充足的硬盘空间。
无论我选择哪个尺寸的文件,它总会给出错误。
这段代码有什么错?
有趣的语法,在最后一行。该错误表明问题出现在该行中,并且源文件或目标目录缺失。由于第一个是自动生成的,因此确保C:\xampp\htdocs\vectorization\admin\upload
存在并且是可写的。
看起来像你的问题可能是你的上传目录使用了正斜杠,但是在Windows上这将是一个反斜杠,你还需要确保上传目录是相对于脚本的。如果不提供完整的路径。
一个很好的提示,以防止斜线的问题是使用DIRECTORY_SEPARATOR不断
两件事情之一 - 要么
- 没有上传目录
- 没有文件php1B2.tmp
这似乎是显而易见的,但一定要仔细检查你的php .ini
file_uploads = On upload_tmp_dir = "C:\xampp\tmp" upload_max_filesize = 64M
你可以做些什么是快速检查以确保文件已被上传s成功地例如
switch ($_FILES["cv"]["error"])
{
case UPLOAD_ERR_FORM_SIZE:
// handle error
case UPLOAD_ERR_INI_SIZE:
// handle error
case UPLOAD_ERR_PARTIAL:
// handle error
case UPLOAD_ERR_NO_FILE:
// handle error
case UPLOAD_ERR_CANT_WRITE:
// handle error
}
它是一种更好的方式来处理上传文件时可能遇到的错误。
@phihag,
感谢您的提示。在研究源代码时,一位新开发人员错误地在$ upload_dir变量赋值中删除(../)。
$upload_dir = "upload/"; //this is wrong
其实它被设置为
$upload_dir = "../upload/"; //this works but accidentally edited by another developer
我什么拉默。我无法发现问题。
不管怎么说感谢一旦人们对你的帮助来解决我的问题。
只是一个快速提示:如果rand()在没有任何参数的情况下被调用,它将自动按照您使用它的方式运行。 – merkuro 2009-06-25 12:05:27
我看到一个安全漏洞:如果有人上传一个名为“filename.php.jpg”的文件和一些恶意的PHP代码在里面?而不是$ ext [1]使用$ ext [count($ ext)-1]。 – Keeper 2009-06-25 12:08:57