PHP-CGI POST veri geçmek nasıl?

0 Cevap php

Update:

Çaresizlik bir uyum içinde, ben bir kabuk aşağıdaki etmedi:

REDIRECT_STATUS=true
SCRIPT_FILENAME=/var/www/...
REQUEST_METHOD=POST
GATEWAY_INTERFACE=CGI/1.1
export REDIRECT_STATUS
export SCRIPT_FILENAME
export REQUEST_METHOD
export GATEWAY_INTERFACE
echo "test=1" | php-cgi

... Ve HALA hiçbir $_POST değişkenleri bu çıkışına kadar gösteriyor:

<?php var_dump($_POST); ?>

Ben php-cgi ikili arayüzü ile küçük bir web sunucusu oluşturmak için çalışıyorum. Ancak, işler çok iyi gitmiyor. php-cgi ikili doğru GET istekleri işler. Bu POST isteklerine gelince, $_POST dizisi şeyler POSTed alıyorsanız bile, boş.

Ben php-cgi ikili beslenir HTTP başlıklarını kontrol ettik ve onlar gerçekten POST veri ve Content-type: application/x-www-form-urlencoded başlığını dahil edebilirim.

Ne isteğine dahil POST veri var ki görmesini php-cgi ikilisini tutmak olabilir?


Ben ilerleme yapıyorum, ben bazı şeyler kadar kazdık ettik PHP source code:

  • /sapi/cgi/cgi_main.c:

    468: static int sapi_cgi_read_post(char *buffer, uint count_bytes TSRMLS_DC)

(Ben bu fonksiyon çağrıldığında hiçbir fikrim yok.)


Aşağıda cevabını okuduktan sonra, ben denedim:

<?php

var_dump($HTTP_RAW_POST_DATA);

?>

... Olan çıkış vermiştir:

NULL

... Hatta yabancı bir şey burada iş başında olduğunu belirten.


Ben yakın alıyorum ... Ben bu işlevi bulundu /main/php_content_types.c:

SAPI_API SAPI_POST_READER_FUNC (php_default_post_reader)

... Ve POST isteklerini işler kod gibi görünüyor.

0 Cevap