Dmitry Prostoy
always_populate_raw_post_data и php-fpm
December 27, 2010 10:06AM
Добрый день,

Необходимо получить доступ к POST-данным запроса (например, к upload-файлам)
в PHP-скрипте. Использую php-fpm 5.2.10 + nginx. При передаче обычного
post-запроса - данные доступны как в $GLOBALS[ "HTTP_RAW_POST_DATA" ], так и
в file_get_contents("php://input").

Однако при multipart/form-data данные переменные ничего не содержат.

Опция в php.ini включена.
[root]# /usr/local/php5-fpm/bin/php -i |grep -i
always_populate_raw_post_data
always_populate_raw_post_data => On => On

В чем может быть проблема?

Заранее благодарю за помощь!

Тестовый скрипт:
<html>
<body>
<form action="?proxy_operation=test" method="post"
enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file" />
<br />
<input type="submit" name="submit" value="Submit" />
</form>

Content of $_FILES:
<?
foreach( $_FILES as $file_field=>$file_info )
{
print_r( $file_info );
}
?></br>
$_SERVER['CONTENT_TYPE']: <?=$_SERVER['CONTENT_TYPE']?></br>
Content of $HTTP_RAW_POST_DATA: <?=$HTTP_RAW_POST_DATA?></br>
Content of $GLOBALS[ "HTTP_RAW_POST_DATA" ]: <?=$GLOBALS[
"HTTP_RAW_POST_DATA" ]?></br>
Content of php://input: <? echo( file_get_contents("php://input") ); ?></br>
</body>
</html>


--
Дмитрий
Romans Heimanis
Re: always_populate_raw_post_data и php-fpm
December 27, 2010 10:16AM
относительно upload - без патченья исходников php тип
формы multipart/form-data - нельзя прочитать иначе чем стандартными
функциями управления файлами ;(

Патч выглядит например так:
diff -uNr php-5.2.12.orig/main/rfc1867.h php-5.2.12/main/rfc1867.h
--- php-5.2.12.orig/main/rfc1867.h 2008-12-31 13:17:49.000000000 +0200
+++ php-5.2.12/main/rfc1867.h 2010-02-24 17:55:30.000000000 +0200
@@ -23,7 +23,7 @@

#include "SAPI.h"

-#define MULTIPART_CONTENT_TYPE "multipart/form-data"
+#define MULTIPART_CONTENT_TYPE "zultipart/form-data"
#define MULTIPART_EVENT_START 0
#define MULTIPART_EVENT_FORMDATA 1
#define MULTIPART_EVENT_FILE_START 2

:)

2010/12/27 Dmitry Prostoy <dmitry.prostoy@gmail.com>

> Добрый день,
>
> Необходимо получить доступ к POST-данным запроса (например, к
> upload-файлам) в PHP-скрипте. Использую php-fpm 5.2.10 + nginx. При передаче
> обычного post-запроса - данные доступны как в $GLOBALS[ "HTTP_RAW_POST_DATA"
> ], так и в file_get_contents("php://input").
>
> Однако при multipart/form-data данные переменные ничего не содержат.
>
> Опция в php.ini включена.
> [root]# /usr/local/php5-fpm/bin/php -i |grep -i
> always_populate_raw_post_data
> always_populate_raw_post_data => On => On
>
> В чем может быть проблема?
>
> Заранее благодарю за помощь!
>
> Тестовый скрипт:
> <html>
> <body>
> <form action="?proxy_operation=test" method="post"
> enctype="multipart/form-data">
> <label for="file">Filename:</label>
> <input type="file" name="file" id="file" />
> <br />
> <input type="submit" name="submit" value="Submit" />
> </form>
>
> Content of $_FILES:
> <?
> foreach( $_FILES as $file_field=>$file_info )
> {
> print_r( $file_info );
> }
> ?></br>
> $_SERVER['CONTENT_TYPE']: <?=$_SERVER['CONTENT_TYPE']?></br>
> Content of $HTTP_RAW_POST_DATA: <?=$HTTP_RAW_POST_DATA?></br>
> Content of $GLOBALS[ "HTTP_RAW_POST_DATA" ]: <?=$GLOBALS[
> "HTTP_RAW_POST_DATA" ]?></br>
> Content of php://input: <? echo( file_get_contents("php://input") );
> ?></br>
> </body>
> </html>
>
>
> --
> Дмитрий
Dmitry Prostoy
Re: always_populate_raw_post_data и php-fpm
December 27, 2010 11:06AM
Romans, а какими стандартными функциями управления файлами можно прочитать
upload типа multipart/form-data без патча исходников?

2010/12/27 Romans Heimanis <romans.heimanis@internet.lv>

> относительно upload - без патченья исходников php тип
> формы multipart/form-data - нельзя прочитать иначе чем стандартными
> функциями управления файлами ;(
>
> Патч выглядит например так:
> diff -uNr php-5.2.12.orig/main/rfc1867.h php-5.2.12/main/rfc1867.h
> --- php-5.2.12.orig/main/rfc1867.h 2008-12-31 13:17:49.000000000 +0200
> +++ php-5.2.12/main/rfc1867.h 2010-02-24 17:55:30.000000000 +0200
> @@ -23,7 +23,7 @@
>
> #include "SAPI.h"
>
> -#define MULTIPART_CONTENT_TYPE "multipart/form-data"
> +#define MULTIPART_CONTENT_TYPE "zultipart/form-data"
> #define MULTIPART_EVENT_START 0
> #define MULTIPART_EVENT_FORMDATA 1
> #define MULTIPART_EVENT_FILE_START 2
>
> :)
>
> 2010/12/27 Dmitry Prostoy <dmitry.prostoy@gmail.com>
>
> Добрый день,
>>
>> Необходимо получить доступ к POST-данным запроса (например, к
>> upload-файлам) в PHP-скрипте. Использую php-fpm 5.2.10 + nginx. При передаче
>> обычного post-запроса - данные доступны как в $GLOBALS[ "HTTP_RAW_POST_DATA"
>> ], так и в file_get_contents("php://input").
>>
>> Однако при multipart/form-data данные переменные ничего не содержат.
>>
>> Опция в php.ini включена.
>> [root]# /usr/local/php5-fpm/bin/php -i |grep -i
>> always_populate_raw_post_data
>> always_populate_raw_post_data => On => On
>>
>> В чем может быть проблема?
>>
>> Заранее благодарю за помощь!
>>
>> Тестовый скрипт:
>> <html>
>> <body>
>> <form action="?proxy_operation=test" method="post"
>> enctype="multipart/form-data">
>> <label for="file">Filename:</label>
>> <input type="file" name="file" id="file" />
>> <br />
>> <input type="submit" name="submit" value="Submit" />
>> </form>
>>
>> Content of $_FILES:
>> <?
>> foreach( $_FILES as $file_field=>$file_info )
>> {
>> print_r( $file_info );
>> }
>> ?></br>
>> $_SERVER['CONTENT_TYPE']: <?=$_SERVER['CONTENT_TYPE']?></br>
>> Content of $HTTP_RAW_POST_DATA: <?=$HTTP_RAW_POST_DATA?></br>
>> Content of $GLOBALS[ "HTTP_RAW_POST_DATA" ]: <?=$GLOBALS[
>> "HTTP_RAW_POST_DATA" ]?></br>
>> Content of php://input: <? echo( file_get_contents("php://input") );
>> ?></br>
>> </body>
>> </html>
>>
>>
>> --
>> Дмитрий
>
>
>
Romans Heimanis
Re: always_populate_raw_post_data и php-fpm
December 27, 2010 11:10AM
Только http://lv.php.net/manual/en/features.file-upload.php

2010/12/27 Dmitry Prostoy <dmitry.prostoy@gmail.com>

> Romans, а какими стандартными функциями управления файлами можно прочитать
> upload типа multipart/form-data без патча исходников?
>
> 2010/12/27 Romans Heimanis <romans.heimanis@internet.lv>
>
> относительно upload - без патченья исходников php тип
>> формы multipart/form-data - нельзя прочитать иначе чем стандартными
>> функциями управления файлами ;(
>>
>> Патч выглядит например так:
>> diff -uNr php-5.2.12.orig/main/rfc1867.h php-5.2.12/main/rfc1867.h
>> --- php-5.2.12.orig/main/rfc1867.h 2008-12-31 13:17:49.000000000 +0200
>> +++ php-5.2.12/main/rfc1867.h 2010-02-24 17:55:30.000000000 +0200
>> @@ -23,7 +23,7 @@
>>
>> #include "SAPI.h"
>>
>> -#define MULTIPART_CONTENT_TYPE "multipart/form-data"
>> +#define MULTIPART_CONTENT_TYPE "zultipart/form-data"
>> #define MULTIPART_EVENT_START 0
>> #define MULTIPART_EVENT_FORMDATA 1
>> #define MULTIPART_EVENT_FILE_START 2
>>
>> :)
>>
>> 2010/12/27 Dmitry Prostoy <dmitry.prostoy@gmail.com>
>>
>> Добрый день,
>>>
>>> Необходимо получить доступ к POST-данным запроса (например, к
>>> upload-файлам) в PHP-скрипте. Использую php-fpm 5.2.10 + nginx. При передаче
>>> обычного post-запроса - данные доступны как в $GLOBALS[ "HTTP_RAW_POST_DATA"
>>> ], так и в file_get_contents("php://input").
>>>
>>> Однако при multipart/form-data данные переменные ничего не содержат.
>>>
>>> Опция в php.ini включена.
>>> [root]# /usr/local/php5-fpm/bin/php -i |grep -i
>>> always_populate_raw_post_data
>>> always_populate_raw_post_data => On => On
>>>
>>> В чем может быть проблема?
>>>
>>> Заранее благодарю за помощь!
>>>
>>> Тестовый скрипт:
>>> <html>
>>> <body>
>>> <form action="?proxy_operation=test" method="post"
>>> enctype="multipart/form-data">
>>> <label for="file">Filename:</label>
>>> <input type="file" name="file" id="file" />
>>> <br />
>>> <input type="submit" name="submit" value="Submit" />
>>> </form>
>>>
>>> Content of $_FILES:
>>> <?
>>> foreach( $_FILES as $file_field=>$file_info )
>>> {
>>> print_r( $file_info );
>>> }
>>> ?></br>
>>> $_SERVER['CONTENT_TYPE']: <?=$_SERVER['CONTENT_TYPE']?></br>
>>> Content of $HTTP_RAW_POST_DATA: <?=$HTTP_RAW_POST_DATA?></br>
>>> Content of $GLOBALS[ "HTTP_RAW_POST_DATA" ]: <?=$GLOBALS[
>>> "HTTP_RAW_POST_DATA" ]?></br>
>>> Content of php://input: <? echo( file_get_contents("php://input") );
>>> ?></br>
>>> </body>
>>> </html>
>>>
>>>
>>> --
>>> Дмитрий
>>
>>
>>
>
Dmitry Prostoy
Re: always_populate_raw_post_data и php-fpm
December 27, 2010 07:48PM
Фишка в том, что флешка, которая аплоадит файл - передает дополнительные
параметры в POST-запросе. И скрипт их не видит. Ломаю голову уже несколько
дней как решить проблему. Флешку переделать нет возможности.

Неужели нет выхода?

2010/12/27 Romans Heimanis <romans.heimanis@internet.lv>

> Только http://lv.php.net/manual/en/features.file-upload.php
>
>
> 2010/12/27 Dmitry Prostoy <dmitry.prostoy@gmail.com>
>
>> Romans, а какими стандартными функциями управления файлами можно прочитать
>> upload типа multipart/form-data без патча исходников?
>>
>> 2010/12/27 Romans Heimanis <romans.heimanis@internet.lv>
>>
>> относительно upload - без патченья исходников php тип
>>> формы multipart/form-data - нельзя прочитать иначе чем стандартными
>>> функциями управления файлами ;(
>>>
>>> Патч выглядит например так:
>>> diff -uNr php-5.2.12.orig/main/rfc1867.h php-5.2.12/main/rfc1867.h
>>> --- php-5.2.12.orig/main/rfc1867.h 2008-12-31 13:17:49.000000000 +0200
>>> +++ php-5.2.12/main/rfc1867.h 2010-02-24 17:55:30.000000000 +0200
>>> @@ -23,7 +23,7 @@
>>>
>>> #include "SAPI.h"
>>>
>>> -#define MULTIPART_CONTENT_TYPE "multipart/form-data"
>>> +#define MULTIPART_CONTENT_TYPE "zultipart/form-data"
>>> #define MULTIPART_EVENT_START 0
>>> #define MULTIPART_EVENT_FORMDATA 1
>>> #define MULTIPART_EVENT_FILE_START 2
>>>
>>> :)
>>>
>>> 2010/12/27 Dmitry Prostoy <dmitry.prostoy@gmail.com>
>>>
>>> Добрый день,
>>>>
>>>> Необходимо получить доступ к POST-данным запроса (например, к
>>>> upload-файлам) в PHP-скрипте. Использую php-fpm 5.2.10 + nginx. При передаче
>>>> обычного post-запроса - данные доступны как в $GLOBALS[ "HTTP_RAW_POST_DATA"
>>>> ], так и в file_get_contents("php://input").
>>>>
>>>> Однако при multipart/form-data данные переменные ничего не содержат.
>>>>
>>>> Опция в php.ini включена.
>>>> [root]# /usr/local/php5-fpm/bin/php -i |grep -i
>>>> always_populate_raw_post_data
>>>> always_populate_raw_post_data => On => On
>>>>
>>>> В чем может быть проблема?
>>>>
>>>> Заранее благодарю за помощь!
>>>>
>>>> Тестовый скрипт:
>>>> <html>
>>>> <body>
>>>> <form action="?proxy_operation=test" method="post"
>>>> enctype="multipart/form-data">
>>>> <label for="file">Filename:</label>
>>>> <input type="file" name="file" id="file" />
>>>> <br />
>>>> <input type="submit" name="submit" value="Submit" />
>>>> </form>
>>>>
>>>> Content of $_FILES:
>>>> <?
>>>> foreach( $_FILES as $file_field=>$file_info )
>>>> {
>>>> print_r( $file_info );
>>>> }
>>>> ?></br>
>>>> $_SERVER['CONTENT_TYPE']: <?=$_SERVER['CONTENT_TYPE']?></br>
>>>> Content of $HTTP_RAW_POST_DATA: <?=$HTTP_RAW_POST_DATA?></br>
>>>> Content of $GLOBALS[ "HTTP_RAW_POST_DATA" ]: <?=$GLOBALS[
>>>> "HTTP_RAW_POST_DATA" ]?></br>
>>>> Content of php://input: <? echo( file_get_contents("php://input") );
>>>> ?></br>
>>>> </body>
>>>> </html>
>>>>
>>>>
>>>> --
>>>> Дмитрий
>>>
>>>
>>>
>>
>
Romans Heimanis
Re: always_populate_raw_post_data и php-fpm
December 28, 2010 01:26AM
Дык они доступны в $_POST[], в $_FILES[] попадают только файлы. Или каким
образом она параметры передаёт?

2010/12/27 Dmitry Prostoy <dmitry.prostoy@gmail.com>

> Фишка в том, что флешка, которая аплоадит файл - передает дополнительные
> параметры в POST-запросе. И скрипт их не видит. Ломаю голову уже несколько
> дней как решить проблему. Флешку переделать нет возможности.
>
> Неужели нет выхода?
>
>
> 2010/12/27 Romans Heimanis <romans.heimanis@internet.lv>
>
>> Только http://lv.php.net/manual/en/features.file-upload.php
>>
>>
>> 2010/12/27 Dmitry Prostoy <dmitry.prostoy@gmail.com>
>>
>>> Romans, а какими стандартными функциями управления файлами можно
>>> прочитать upload типа multipart/form-data без патча исходников?
>>>
>>> 2010/12/27 Romans Heimanis <romans.heimanis@internet.lv>
>>>
>>> относительно upload - без патченья исходников php тип
>>>> формы multipart/form-data - нельзя прочитать иначе чем стандартными
>>>> функциями управления файлами ;(
>>>>
>>>> Патч выглядит например так:
>>>> diff -uNr php-5.2.12.orig/main/rfc1867.h php-5.2.12/main/rfc1867.h
>>>> --- php-5.2.12.orig/main/rfc1867.h 2008-12-31 13:17:49.000000000 +0200
>>>> +++ php-5.2.12/main/rfc1867.h 2010-02-24 17:55:30.000000000 +0200
>>>> @@ -23,7 +23,7 @@
>>>>
>>>> #include "SAPI.h"
>>>>
>>>> -#define MULTIPART_CONTENT_TYPE "multipart/form-data"
>>>> +#define MULTIPART_CONTENT_TYPE "zultipart/form-data"
>>>> #define MULTIPART_EVENT_START 0
>>>> #define MULTIPART_EVENT_FORMDATA 1
>>>> #define MULTIPART_EVENT_FILE_START 2
>>>>
>>>> :)
>>>>
>>>> 2010/12/27 Dmitry Prostoy <dmitry.prostoy@gmail.com>
>>>>
>>>> Добрый день,
>>>>>
>>>>> Необходимо получить доступ к POST-данным запроса (например, к
>>>>> upload-файлам) в PHP-скрипте. Использую php-fpm 5.2.10 + nginx. При передаче
>>>>> обычного post-запроса - данные доступны как в $GLOBALS[ "HTTP_RAW_POST_DATA"
>>>>> ], так и в file_get_contents("php://input").
>>>>>
>>>>> Однако при multipart/form-data данные переменные ничего не содержат.
>>>>>
>>>>> Опция в php.ini включена.
>>>>> [root]# /usr/local/php5-fpm/bin/php -i |grep -i
>>>>> always_populate_raw_post_data
>>>>> always_populate_raw_post_data => On => On
>>>>>
>>>>> В чем может быть проблема?
>>>>>
>>>>> Заранее благодарю за помощь!
>>>>>
>>>>> Тестовый скрипт:
>>>>> <html>
>>>>> <body>
>>>>> <form action="?proxy_operation=test" method="post"
>>>>> enctype="multipart/form-data">
>>>>> <label for="file">Filename:</label>
>>>>> <input type="file" name="file" id="file" />
>>>>> <br />
>>>>> <input type="submit" name="submit" value="Submit" />
>>>>> </form>
>>>>>
>>>>> Content of $_FILES:
>>>>> <?
>>>>> foreach( $_FILES as $file_field=>$file_info )
>>>>> {
>>>>> print_r( $file_info );
>>>>> }
>>>>> ?></br>
>>>>> $_SERVER['CONTENT_TYPE']: <?=$_SERVER['CONTENT_TYPE']?></br>
>>>>> Content of $HTTP_RAW_POST_DATA: <?=$HTTP_RAW_POST_DATA?></br>
>>>>> Content of $GLOBALS[ "HTTP_RAW_POST_DATA" ]: <?=$GLOBALS[
>>>>> "HTTP_RAW_POST_DATA" ]?></br>
>>>>> Content of php://input: <? echo( file_get_contents("php://input") );
>>>>> ?></br>
>>>>> </body>
>>>>> </html>
>>>>>
>>>>>
>>>>> --
>>>>> Дмитрий
>>>>
>>>>
>>>>
>>>
>>
>
Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 97
Record Number of Users: 6 on February 13, 2018
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready