我制作了一个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.但是,这个问题仍然存在。我不确定是什么导致了这个问题。
答案 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 。