PHP上传无效

时间:2015-08-21 14:58:12

标签: php upload

我制作了一个php上传脚本,该脚本将在提交上传表单后执行。

$game_tmp = $game_file['tmp_name'];
$game_name = $game_file['name'];
$game_dest = "/games/" . game_name;

if (move_uploaded_file($game_tmp, $game_dest)) {
    echo "<b>SUCCESS:</b><br />";
}
else {
    echo "Error.";
}

它总是输出Error,所以我检查了我的php.ini文件和phpinfo()。我的php.ini显示upload_tmp_dir没有值,phpinfo()中的值也是如此。我将目录的calue更改为/ upload,并将open_basedir更改为upload_tmp_dir。然而,当我查看phpinfo()时,它仍然显示upload_tmp_dir,其本地和主值无值。我相信这是阻止我的上传脚本工作的问题。我也创建了一个/ upload文件夹,并给出了它的权限值777.但是,这个问题仍然存在。我不确定是什么导致了这个问题。

3 个答案:

答案 0 :(得分:0)

试试这个,你必须使用$_FILE超级全局:

if($_FILES["game_file"]["error"] == UPLOAD_ERR_OK) {
    $game_tmp = $_FILES['game_file']['tmp_name'];
    $game_name = $_FILES['game_file']['name'];
    $game_dest = "/games/" . $game_name;

    if (move_uploaded_file($game_tmp, $game_dest)) {
        echo "<b>SUCCESS:</b><br />";
    }
    else {
        echo "Error.";
    }

}

答案 1 :(得分:0)

如果未指定upload_tmp_dir,php将使用系统的默认tmp目录。您可以使用sys_get_temp_dir()函数来标识PHP使用的临时目录。 你试过打印$ game_file var吗? 如果没有,请尝试print_r($ game_file)或var_dump($ game_file)来查看它是否实际设置。您还可以打印$ _FILE以查看错误消息(http://php.net/manual/en/features.file-upload.errors.php

move_uploaded_file可能由于多种原因而失败。另外,确认目标目录是否存在且是否可写。

答案 2 :(得分:0)

错别字:

$game_dest = "/games/" . game_name;
                         ^---you forgot a $ here

这是一个未定义的常量,因此PHP将礼貌地#34;将其视为不带引号的字符串,然后您生成"/games/game_name"

从不 EVER 在使用display_errors并关闭error_reporting的情况下,在PHP中进行开发/调试工作。这相当于去了#lalalalala听不到你的声音&#34;用手指塞进你的耳朵里。

您还可以简单地假设您的上传成功。由于某种原因,$ _FILES中有['error']个参数。在开始摆弄甚至可能不存在的文件之前,请先检查 FIRST