调试PHP文件上传器

时间:2013-01-21 04:20:27

标签: php forms file debugging upload

我遇到了在测试网站上制作文件上传表单的问题。使用的教程:

在第一种情况下,在创建表单和PHP文件之后,它会说没有给出任何理由就无法上传文件(基于给出的代码,这并不奇怪)。然后我尝试使用第二个教程重做它,它给了我更多的信息(一个有效的文件还没有上传),即使我修改了代码,所以它在那个IF门检查的唯一事情是尺寸是否太大大。

我搜索了一会儿,发现有人建议转储$_FILES,这会给出一个空数组。其他人建议回复$_FILES['userfile']['error'],但没有提供任何信息。

所以我检查以确保表单具有正确的enctype(确实如此)。然后我检查了cpanel中的PHP信息。上传文件已启用,最大大小为2M(我尝试上传的内容小于此值)。

我不知道接下来要去哪里解决这个问题。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

在您的脚本顶部,根据此列表选择符合您需求的错误报告:

<?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);

?>

还要检查服务器上的错误日志是否有错误。 :)这是解决大多数问题的最好方法。

答案 1 :(得分:0)

如果更改上述任何参数似乎没有任何区别,可能是某个地方的html表单包含名称MAX_FILE_SIZE作为隐藏字段。

<input type="hidden" name="MAX_FILE_SIZE" value="10000000">

在上面的示例中,任何超过10MB的文件都不会上传。