我遇到了一个问题,在测试站点上制作文件上传表单。使用的教程:
- http://www.tizag.com/phpT/fileupload.php
- http://p2p.wrox.com/php-faqs/11585-q-how-do-i-upload-file-directory.html
在第一种情况下,在创建表单和PHP文件之后,它会说它没有任何理由上传文件失败(基于给出的代码,这并不奇怪)。然后我试着用第二个教程重做它,它给了我更多的信息(一个有效的文件还没有上传),即使在我修改了代码之后,所以它在IF门检查的唯一一件事是大小是否太大。
我搜索了一会儿,发现有人建议转储$_FILES
,它给出了一个空数组。还有人建议回显$_FILES['userfile']['error']
,但是没有给出任何信息。
所以我检查,以确保表单有正确的enctype(它确实)。然后我检查了PHP信息从cpanel。上传文件是启用的,最大大小是2M(我尝试上传的东西比这个小)。
我不知道下一步该去哪里解决这个问题。
在脚本的顶部打开错误报告,从列表中选择适合您需要的:
<?php
// Turn off all error reporting
error_reporting(0);
// Report simple running errors
error_reporting(E_ERROR | E_WARNING | E_PARSE);
// Reporting E_NOTICE can be good too (to report uninitialized
// variables or catch variable name misspellings ...)
error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
// Report all errors except E_NOTICE
// This is the default value set in php.ini
error_reporting(E_ALL ^ E_NOTICE);
// Report all PHP errors (see changelog)
error_reporting(E_ALL);
// Report all PHP errors
error_reporting(-1);
// Same as error_reporting(E_ALL);
ini_set('error_reporting', E_ALL);
?>
还要检查服务器上的错误日志。这是解决大多数问题的最好方法。
如果改变上述任何参数似乎没有任何区别,它可能是html表单的某个地方包含了名称MAX_FILE_SIZE作为隐藏字段。
<input type="hidden" name="MAX_FILE_SIZE" value="10000000">
在上面的例子中,任何超过10MB的文件都不会被上传。