我已经为这个问题在互联网上搜索了两天,希望其他人之前遇到过这个问题。我看到很多关于文件上传和 PHP 的问题,但我的问题略有不同。我希望我只是错过了一些非常明显的东西。
看起来好像我的表单中的数据永远不会完全到达服务器,因为填充在$_FILES数组中的唯一参数是“名称”。
例如,这是一个$_FILES的 vardump :
array(1) { ["gameimage"]=> array(1) { ["name"]=> string(15) "Donkey-kong.gif" } }
不存在错误代码、不存在tmp_name和不存在类型。
这是我正在测试的一些非常基本的 HTML:
<form name="upload-image-form" enctype="multipart/form-data" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="2000000" />
<input type="file" name="gameimage" size="30" />
<input type="submit" value="Submit" />
</form>
这是我的相关 php.ini 设置:
file_uploads = On
upload_max_filesize = 2M
max_file_uploads = 10
upload_tmp_dir is default, but I have tried with /tmp as well.
运行 PHP 5.3.8
我怀疑 apache mod_rewrite 或其他一些 apache mod 正在干扰。
我完全控制了主机,它是一个在 AWS 中运行的微实例。
任何帮助,将不胜感激!
修正#1:
我已经从 Chrome 和 FF 中的浏览器控制台验证数据正在通过 http 正确传输。我的测试文件非常小,不到 10kb。
修正#2:
似乎其他人,使用完全相同的 AWS 实例,也遇到了同样的问题:
http://www.webmasterworld.com/php/4452298.htm
这些版本的 apache 和 linux 似乎存在一些核心问题。