Простой PHP для формы загрузки файлов не работает? - PullRequest
0 голосов
/ 05 декабря 2011

Я новичок в этом и на этапе обучения.Я создал форму, как показано ниже,

<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 />";
}

выглядит так:

Пустой POST!_SERVER ['REQUEST_METHOD'] установлено, а 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 становятся пустыми?

Ответы [ 2 ]

1 голос
/ 05 декабря 2011

Несколько вещей:

1

    #!/usr/bin/php
^^^^

Пробелы перед вашим shebang будут интерпретироваться интерпретатором PHP как вывод. Шебанг должен появиться в самом начале вашего файла

2.

HTTP_POST_VARS устарела и больше не должна использоваться, если только вы не используете древнюю версию PHP, и в этом случае вам действительно нужно обновить.

3

Поместите phpinfo(); вызов в ваш скрипт. Он покажет как глобальные настройки, так и локальные настройки. Возможно, файл конфигурации (.htaccess, другой .ini позже в цепочке загрузки и т. Д.) Переопределяет ваши настройки и запрещает загрузку файлов. Если столбец local в выводе phpinfo не показывает правильные настройки, вам нужно выяснить, где происходит переопределение.

4

Вместо того, чтобы делать «blahblah is empty» и т. Д., Попробуйте выполнить var_dump($whatever), который покажет вам фактический пустой массив или его содержимое (тип + размер + данные), если есть что-либо.

0 голосов
/ 28 декабря 2011

В дополнение к комментариям выше попробуйте var_dump ($ _ POST) и var_dump ($ _ FILES);это сбросит каждый файл и значения, размещенные на странице.Если он не работает, и ваши настройки php.ini такие же, как вы писали ранее, вы можете попробовать использовать функцию ini_set () на странице действий.Используйте ini_set (), чтобы установить file_uploads и другие параметры конфигурации.Ini_set () не будет работать для всех настроек, но этого должно быть достаточно для начала работы.Не забудьте и надёжную функцию phpinfo ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...