2011-04-13 15 views
27

Bunun biraz garip gelebileceğini biliyorum, ancak bazı parametreleri $ _POST dizisine iletmem gerekiyor. Apache'nin yaptığı gibi ya da başka bir web sunucusuna benzer.

Ne yazık ki Ubuntu'm için her yerde libapache2-mod-php5 bulunamadı.

+0

http://superuser.com/q bakın uestions/149329/nasıl-do-i-make-a-post-istek-ile-curl ve birleştirilmelidir. – Neal

cevap

16

Kolayca yapılabilir değil. İçeri php-cgi ikili ve boru sahte POST isteği çağırabileceği Ama CGI ortam değişkenleri bir sürü kurmak gerekir.

echo 'var1=123&var2=abc' | REQUEST_METHOD=POST SCRIPT_FILENAME=script.php REDIRECT_STATUS=CGI CONTENT_TYPE=application/www-form-urlencoded php-cgi 

Not: Yetersiz, böyle çalışmaz. Ama böyle bir şey ... sadece senaryoyu yama ve önceden tanımlanmış bir ortam değişkeni dan $ _POST dizi yüklemek izin verirsen Kesinlikle daha kolay


.

$_POST = parse_url($_SERVER["_POST"]); 

Sonra basitlik için _POST=var=123 php script.php gibi çağırmak.

+0

Bir cevap için teşekkürler. PHP-Cgi benim için çalışıyor! – hades

+2

Vay, sakin. Bunu kendim için çalışmaya başlamadığımı itiraf ediyorum: | – mario

+0

Bu nasıl sadece cURL kullanarak daha iyidir? – Neal

3

kullanım bukle verilerini
bukle --bilgi "name = ii" "post Param1 = deger1 & param2 = deger2" http://test.com/sample.php

+1

OP olarak karıştı im curl için sormuyor – anthonygore

+1

Bunu reddetmek için bir neden göremiyorum. OP kıvırmak istemedi, ama aynı zamanda çok spesifik değildi ve bu cevap kesinlikle işe yarıyor. Ayrıca kesinlikle kolay. Upvoted. – Anthony

+0

Curl web sunucusundan geçmeli ve özellikle bir sunucu kullanmadığını belirtti. –

40

Daha ucuz olduğundan, bunun için bir çözüm ararken ve geldi edildi Google’da ilk isabet The second one bir şekilde benim için yararlı oldu, çünkü PHP betiğine erişiminiz varsa ve bunu değiştirebilirseniz gerçekten çok kolay bir çözümü var.

Sadece senaryonun başlangıcında aşağıdaki satırları ekleyin: ihtiyacım gibi, $ _GET veya $ _POST kullanmak istiyorsanız

/* if started from commandline, wrap parameters to $_POST and $_GET */ 
if (!isset($_SERVER["HTTP_HOST"])) { 
    parse_str($argv[1], $_GET); 
    parse_str($argv[1], $_POST); 
} 

Bu kod küçük bir parça (Eğer hile karar verebilir yok ya . o, hem
Senaryonu değiştirdikten sonra size args geçen komut ile diyebilirsin:

php yourscript.php 'arg1=x&arg2=y' 

Eğlencenin

+2

Bu bir çekicilik gibi çalıştı. Aslında Zend'in Eclipse sürümünü kullanıyorum. Zend'in belgelerine göre bir hata ayıklama profili oluşturdum ve PHP Script Argümanlarını ekledim. Kodunuzu PHP betiğinin ve viola'nın üstüne koyuyorum! $ Argv [] 'da saklanan argümanları _POST dizisine ayrıştırdı. Çok grats! – MikeyE

+0

Benim için çok işe yaramadı (W10 OS): $ _GET/$ _ POST dizileri için tek tırnakların çift tırnak ile değiştirilmesi gerekiyordu. –