无法使用 php 将大文件上传到服务器
我无法将大文件加载到服务器。问题在于,如果文件稍大于 2mb,则文件 $_FILES["filename"]["tmp_name"]
为空。我尝试更改 php.ini 中的变量
upload_max_filesize = 700M
post_max_size = 16M
但不起作用。 还尝试将此变量添加到我的 .httaccess 文件中 - 但出现 500 错误。
Error code while uploading=1.
UPLOAD_ERR_INI_SIZE
Value: 1; The uploaded file exceeds the upload_max_filesize directive in php.ini.
这是我的upload.php页面,请回答我做错了什么?谢谢!
<?php
if(strlen($_FILES["filename"]["name"]))
{
$folder = "uploads/";
echo $folder;
$error = "";
if($_FILES["filename"]["size"] > 1024*700*1024)
{
$error .= "<b><p class=ErrorMessage>Размер файла превышает 5Mb</p></b><br>";
header("Location: upload.php?error=".$error, true, 303 );
}
if(!file_exists($folder.="hh/"))
{
if(!mkdir($folder, 0700))
$error .= "<b><p class=ErrorMessage>Folder not created</p></b><br>";
}
//echo "<br>".$_FILES["filename"]["tmp_name"]."<br>";
echo $folder.$_FILES["filename"]["name"]."<br>";
echo $_FILES["filename"]["error"]."<br>";
if(move_uploaded_file($_FILES["filename"]["tmp_name"], $folder.$_FILES["filename"]["name"]))
{
echo("Файл успешно загружен <br>");
echo("Характеристики файла: <br>");
echo("Имя файла: ");
echo($_FILES["filename"]["name"]);
echo("<br>Размер файла: ");
echo($_FILES["filename"]["size"]);
echo("<br>Каталог для загрузки: ");
echo($folder.=$_FILES["filename"]["name"]);
echo("<br>Тип файла: ");
echo($_FILES["filename"]["type"]);
}
else
{
$error .= "<b><p class=ErrorMessage>Ошибка загрузки файла</p></b><br>";
}
}
?>
<!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>Документ без названия</title>
</head>
<body>
<?php
if(isset($_REQUEST["error"]))
{
echo $_REQUEST["error"];
}
?>
<h2><p><b> Форма для загрузки файлов </b></p></h2>
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="filename" READONLY><br>
<input name="Upload" type="submit" value="Upload"><br>
</form>
</body>
</html>
I can't load big files to server. The problem is in that file $_FILES["filename"]["tmp_name"]
is empty if file a little more bigger then 2mb. I tried to change variables in php.ini
upload_max_filesize = 700M
post_max_size = 16M
but not working to.
Also tried to add this variables to my .httaccess file - but 500 error appears.
Error code while uploading=1.
UPLOAD_ERR_INI_SIZE
Value: 1; The uploaded file exceeds the upload_max_filesize directive in php.ini.
Here is my uppload.php page, please anwer what I doing wrong? Thanx!
<?php
if(strlen($_FILES["filename"]["name"]))
{
$folder = "uploads/";
echo $folder;
$error = "";
if($_FILES["filename"]["size"] > 1024*700*1024)
{
$error .= "<b><p class=ErrorMessage>Размер файла превышает 5Mb</p></b><br>";
header("Location: upload.php?error=".$error, true, 303 );
}
if(!file_exists($folder.="hh/"))
{
if(!mkdir($folder, 0700))
$error .= "<b><p class=ErrorMessage>Folder not created</p></b><br>";
}
//echo "<br>".$_FILES["filename"]["tmp_name"]."<br>";
echo $folder.$_FILES["filename"]["name"]."<br>";
echo $_FILES["filename"]["error"]."<br>";
if(move_uploaded_file($_FILES["filename"]["tmp_name"], $folder.$_FILES["filename"]["name"]))
{
echo("Файл успешно загружен <br>");
echo("Характеристики файла: <br>");
echo("Имя файла: ");
echo($_FILES["filename"]["name"]);
echo("<br>Размер файла: ");
echo($_FILES["filename"]["size"]);
echo("<br>Каталог для загрузки: ");
echo($folder.=$_FILES["filename"]["name"]);
echo("<br>Тип файла: ");
echo($_FILES["filename"]["type"]);
}
else
{
$error .= "<b><p class=ErrorMessage>Ошибка загрузки файла</p></b><br>";
}
}
?>
<!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>Документ без названия</title>
</head>
<body>
<?php
if(isset($_REQUEST["error"]))
{
echo $_REQUEST["error"];
}
?>
<h2><p><b> Форма для загрузки файлов </b></p></h2>
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="filename" READONLY><br>
<input name="Upload" type="submit" value="Upload"><br>
</form>
</body>
</html>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
如果配置正确,请使用 phpinfo.php 检查您的 php 设置。然后你就会确切地知道该怎么做。
还有一件事要确保 /tmp 目录对于当前用户是可写的。
check your php setting using phpinfo.php, if you have the right configuration. Then you will know exactly what to do.
And one more thing make sure the /tmp directory is writable for the current user.
也许你的 php.ini 被忽略了。尝试从 PHP 调用它。
或者通过 .htaccess
Maybe your php.ini is ignored. Try calling this from PHP.
Or via .htaccess
尝试增加 php.ini 中的这些值
try increasing these values in php.ini