我是新手,还处于学习阶段。我创建了一个类似下面的表单,
<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脚本看起来像这样,
#!/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中的相关项如下所示:
;;;;;;;;;;;;;;;;
; 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变空了?
发布于 2011-12-05 23:17:40
以下是一些事情:
1.
#!/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) (如果有什么存在的话)。
发布于 2011-12-28 12:13:10
除了上面的注释之外,还可以尝试var_dump($_POST)和var_dump($_FILES);,这将转储发布到页面的每个文件和值。
如果它不起作用,并且您的php.ini设置与您之前编写的一样,您可以尝试使用操作页面上的ini_set()函数。使用ini_set()设置file_uploads和其他配置设置。Ini_set()并不适用于所有设置,但它应该足以让您开始使用。
不要忘记可靠的phpinfo()函数。
https://stackoverflow.com/questions/8387398
复制相似问题