PHP文件上传不起作用

时间:2013-11-27 22:44:45

标签: php file-upload

我在从php中删除文件名中的空格时遇到问题。提交文件后,文件不会上传到服务器。这是代码:

<?php
session_start();

mysql_connect('localhost','root','') or die(mysql_error());
mysql_select_db('djmann1013');

if(!isset($_SESSION['username']) && !isset($_SESSION['auth'])){
    header('Location: /');
}
$username = $_SESSION['username'];
echo $username;

$dirs = mysql_query("SELECT * FROM `users` WHERE `usr_name` = '" . $username . "'") or die(mysql_error());
$r = mysql_fetch_assoc($dirs);
$dir = $r['usr_directory'];

if(isset($_FILES['upload'])){
    $file = preg_replace('/\s+/', '_', $_FILES['upload']['name']);
    $current_time = date('n/j/Y ');

    mysql_query("INSERT INTO `uploaded_files` (`username`,`file_name`,`time_updated`) VALUES('" . $username . "','" . $file . "','" .  $current_time . "')") or die(mysql_error());
    move_uploaded_file($_FILES['upload']['tmp_name'], "usr_files/$dir/$file");
}

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Home - LAN File Upload</title>
</head>

<body>
<h1>Upload a file</h1>
<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="upload" id="file"><br />
<input type="submit" name="submit" value="Upload">
</form>
<b>Note: the larger the file, the longer it takes to upload.</b>
<h1>Account Settings</h1>
<b><a href="/file_browser.php">Your Files</a></b>
<b><a href="settings.php">Account Settings</a></b>
<b><a href="/?action=logout">Logout</a></b>
</body>
</html>

我不知道这段代码有什么问题。有人有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我认为问题是由于以下某个字段中的错误:SQL查询,用于存储文件的有效路径或要将文件存储到的目录权限不正确。

对于这些错误中的任何一个,您需要进行一些调试。首先,您需要在PHP中启用错误报告,因为它似乎在您的情况下被禁用。看看这个问题如何启用它: How do I get PHP errors to display?

基本上你可以尝试插入:

error_reporting(E_ALL);<br>
ini_set('display_errors', 1);

在PHP代码的开头,就在打开&lt;?php标签之后,但在某些情况下它可能不起作用,所以你最好在php.ini文件中启用它,然后重启web服务器。

你的php.ini应该有

display_errors = on

然后在你看到真正的错误后,你将能够很快解决它。