我是这个人的新手并处于学习阶段。我创建了一个如下表单,
<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看起来像,
空帖! _SERVER [&#39; REQUEST_METHOD&#39;]已设置且REQUEST_METHOD = POST _FILES是空的!
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变空了?
答案 0 :(得分:1)
一些事情:
1
#!/usr/bin/php
^^^^
PHP解释器将把shebang之前的空格视为输出。 shebang应该出现在文件的最开头
2
HTTP_POST_VARS已弃用,不应再使用了,除非你使用的是古老的PHP版本,在这种情况下你真的应该升级。
3
将phpinfo();
调用放入您的脚本中。它将显示全局设置和本地设置。配置文件(.htaccess,稍后在加载链中的另一个.ini等)可能会覆盖您的设置并禁用文件上载。如果phpinfo输出中的local
列未显示正确的设置,则必须确定覆盖的发生位置。
4
不要做“blahblah是空的”之类的,而是尝试var_dump($whatever)
,它会显示实际的空数组,或者它的内容(类型+大小+数据)是否存在。< / p>
答案 1 :(得分:0)
除了上面的评论,还可以尝试var_dump($ _ POST)和var_dump($ _ FILES);这将转储发布到页面的每个文件和值。
如果它不起作用,并且您的php.ini设置与之前编写的一样,则可以尝试在操作页面上使用ini_set()函数。使用ini_set()设置file_uploads和其他配置设置。 Ini_set()不适用于所有设置,但它应该足以让您入门。
不要忘记可靠的phpinfo()函数。