为啥 $_FILES 超级全局总是空的

Posted

技术标签:

【中文标题】为啥 $_FILES 超级全局总是空的【英文标题】:why is the $_FILES super global always empty为什么 $_FILES 超级全局总是空的 【发布时间】:2011-03-17 03:17:54 【问题描述】:

这是我的page

这是我的表格

<h2>Upload Photo</h2>
<form name="photo" enctype="multipart/form-data" action="<?php echo $_SERVER["PHP_SELF"];?>" method="post">
Photo <input type="file" name="image" size="30" /> <input type="submit" name="upload" value="Upload" />
</form>

上面有这个

<?php print_r($_FILES);?>

脚本在本地完美运行,当我将它放在服务器上时,我什么也得不到......

我有这套

ini_set ('max_execution_time', '86400'); 
set_time_limit(86400); 
ini_set("memory_limit","128M");
ini_set('max_upload_filesize', "30M"); 
ini_set("post_max_size", "150M"); 
ini_set("session.gc_maxlifetime","10800");

echo 'file_uploads: '. ini_get('file_uploads'). '<br />';
echo 'upload_tmp_dir: '. ini_get('upload_tmp_dir'). '<br />';
echo 'upload_max_filesize: '. ini_get('upload_max_filesize'). '<br />';
echo 'max_file_uploads: '. ini_get('max_file_uploads'). '<br />';

我认为它可能是 gd 但它已启用

GD Support  enabled
GD Version  bundled (2.0.34 compatible)
FreeType Support    enabled
FreeType Linkage    with freetype
FreeType Version    2.1.9
T1Lib Support   enabled
GIF Read Support    enabled
GIF Create Support  enabled
JPG Support     enabled
PNG Support     enabled
WBMP Support    enabled
XBM Support     enabled

【问题讨论】:

Array ( [image] => Array ( [name] => domain.txt [type] => text/plain [tmp_name] => C:\Temp\UploadData\php1AB0.tmp [error ] => 0 [size] => 125 ) ) => 这对我来说很好。也许您尝试上传一个非常大的文件 对这些选项中的大多数使用 ini_set() 是没有意义的。在 PHP 已经启动(并复制或忽略它)之后更改可接受的文件大小为时已晚。 对我来说非常适合......那里也有不错的小裁剪功能!你有几个警告,但它工作正常。 奇怪的是,当 phpinfo 在页面上时,它会在数组中显示一些东西,而当它消失时什么也没有……现在试试……我的问题仍然存在 您的主机可能出于安全原因禁用了文件上传? 【参考方案1】:

在服务器上抛出一个&lt;?php phpinfo(); ?&gt; 文件,然后查看file_uploads 部分以确保它设置为打开。我也会检查 phpinfo() ,因为我有时会在检查 ini_get() 时看到一些奇怪的东西......

您是否还与 Firebug 核对以确保文件正在发送?

【讨论】:

我如何检查萤火虫...我不知道如何检查正在发送的文件 可能是这样,但这只是需要检查的额外内容。如果需要,请为 Firefox 安装 Firebug,然后打开它,单击“网络”选项卡,刷新页面,提交表单,然后您应该会在其中看到一个 POST 请求,然后单击其中的“发布”选项卡以查看文件是否存在实际上已发送...【参考方案2】:

我遇到了同样的问题,我通过编辑我的.htaccess 文件发现了问题,因为他包含一个在 Url 中进行重写以隐藏网页中的扩展名的函数。 也许你有同样的问题。 将.htaccess文件名改成Test。

【讨论】:

以上是关于为啥 $_FILES 超级全局总是空的的主要内容,如果未能解决你的问题,请参考以下文章

PHP 超级全局变量

php超级全局变量

PHP 超级全局变量

php超级全局变量

php学习笔记-超级全局变量

PHP超级全局变量魔术变量和魔术函数