首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >简单的PHP文件上传表不工作?

简单的PHP文件上传表不工作?
EN

Stack Overflow用户
提问于 2011-12-05 23:10:20
回答 2查看 1.2K关注 0票数 0

我是新手,还处于学习阶段。我创建了一个类似下面的表单,

代码语言:javascript
复制
<html>
<body>    
<form enctype="multipart/form-data" action="/cgi-bin/FileUpload.php" method="POST">
<label for="file">Filename:</label>
<input type="file" name="ufile"/>
<br />
<input type="submit" name="submit" value="Submit" />
</form>
</body>
</html>

我的php脚本看起来像这样,

代码语言:javascript
复制
    #!/usr/bin/php
<?
header("Content-type:text/html");
echo "\n";
if (isset($HTTP_POST_VARS['submit'])){
    echo "HTTP_POST_VARS['submit'] is set" . "<br />";
}

if (empty($_POST)) {
    echo "Empty POST !" . "<br />";
}
if(isset($_POST['type'])){
    echo "POST['type'] is set to " . $_POST['type'] . "<br />";
}

if (isset($_SERVER['REQUEST_METHOD'])){
    echo "_SERVER['REQUEST_METHOD'] is set and REQUEST_METHOD = " . $_SERVER['REQUEST_METHOD'] . "<br />";
}

if (empty($_FILES)){
    echo "_FILES is empty ! " . "<br /> <br />";
}

putput看起来像,

设置了空的POST!_SERVER‘_FILES _METHOD’,并且REQUEST_METHOD = POST请求方法为空!

php.ini中的相关项如下所示:

代码语言:javascript
复制
;;;;;;;;;;;;;;;;
; File Uploads ;
;;;;;;;;;;;;;;;;

; Whether to allow HTTP file uploads.
; http://php.net/file-uploads
file_uploads = On

; Temporary directory for HTTP uploaded files (will use system default if not
; specified).
; http://php.net/upload-tmp-dir
upload_tmp_dir = /tmp

; Maximum allowed size for uploaded files.
; http://php.net/upload-max-filesize
upload_max_filesize = 2M

; Maximum number of files that can be uploaded via a single request
max_file_uploads = 20

; Maximum size of POST data that PHP will accept.
; http://php.net/post-max-size
post_max_size = 10M

现在,为什么_POST和_FILES变空了?

EN

回答 2

Stack Overflow用户

发布于 2011-12-05 23:17:40

以下是一些事情:

1.

代码语言:javascript
复制
    #!/usr/bin/php
^^^^

shebang之前的空格将被PHP解释器视为输出。shebang应该出现在文件的最开始处

2.

HTTP_POST_VARS已经被弃用,不应该再使用了,除非你使用的是旧版本,在这种情况下,你真的应该升级。

3.

在脚本中加入一个phpinfo();调用。它将同时显示全局设置和本地设置。有可能是配置文件(.htaccess,加载链中后面的另一个.ini,等等)正在覆盖您的设置并禁用文件上载。如果phpinfo输出中的local列没有显示正确的设置,那么您必须找出覆盖发生在哪里。

4.

不要做"blahblah is empty“之类的操作,试着做var_dump($whatever),它会显示实际的空数组,或者显示它的内容(type+size+data) (如果有什么存在的话)。

票数 1
EN

Stack Overflow用户

发布于 2011-12-28 12:13:10

除了上面的注释之外,还可以尝试var_dump($_POST)和var_dump($_FILES);,这将转储发布到页面的每个文件和值。

如果它不起作用,并且您的php.ini设置与您之前编写的一样,您可以尝试使用操作页面上的ini_set()函数。使用ini_set()设置file_uploads和其他配置设置。Ini_set()并不适用于所有设置,但它应该足以让您开始使用。

不要忘记可靠的phpinfo()函数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8387398

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档