/ / Post pole je vždy prázdne v aplikácii CodeIgniter bežiacej na nginx - codeigniter, nginx

Pole príspevkov je vždy prázdne v aplikácii CodeIgniter bežiacej na nginx - codeigniter, nginx

Mám nainštalovaný nginx 1.0.2 na Ubuntu 11 s php 5.3.5 bežiacim s FPM / FastCGI.

Na moju aplikáciu codeigniter dostanemnasledujúci problém. Mám jednoduchý prihlasovací formulár s poľom užívateľské meno a heslo. Po odoslaní formulára je pole $ _POST prázdne. Rovnako aj $ this-> input-> post („používateľské meno“) a $ this-> input-> post („heslo“).

Aplikácia funguje dobre na apache. Pokúsil som sa vytvoriť jednoduchý testovací formulár na jednoduchom súbore php a údaje $ _POST fungovali perfektne. V prípade potreby môžem poskytnúť konfiguračné súbory. Nejaké nápady ?

aktualizovať: Nakoniec sa to podarilo. V mojej konfigurácii vhost boli nejaké presmerovania, ktoré spôsobovali stratu dát po odoslaní. Fungujúcu konfiguráciu vhost nájdete tu: http://codeigniter.com/forums/viewthread/90231/#455528

odpovede:

1 pre odpoveď č. 1

Myslím, že problém teraz poznám.Skutočnosť, že sa vracia kód 404 a spracováva váš skript, mi hovorí, že stránka error_page robí chybu „prepis“, aby získala požiadavku na /index.php. Stránka error_page do nepomenovaného umiestnenia transformuje požiadavku na GET, takže error_page 404 /index.php robí interné presmerovanie na /index.php, ale v procese (a nedostatku) zbavuje telo žiadosti z = znamená, že stavový kód nie je prepísaný cieľovou stránkou error_page). Nie som si istý, prečo presmerovanie nevykonávajú všetci (ak je spracovanie v nginxe naozaj čudné, takže je dobré sa im vyhnúť), ale myslím si, že ak pre svoju chybovú stránku používate pomenované umiestnenie, zachová telo žiadosti a vyplní $ _POST. Skúste nahradiť svoju aktuálnu smernicu error_page:

location @redir {
rewrite ^ /index.php;
}
error_page 404 = @redir;

0 pre odpoveď č. 2

skontrolujte tieto:

<form method="post">

pouzivas postovu metodu?

skúste spustiť profiler:

$this->output->enable_profiler(TRUE);

vidíš tam nejaký výstup POST?


0 pre odpoveď č. 3

Používal som svoj vlastný rámec PHP s podobným URIprepisuje ako CI a na serveri Nginx mali podobné problémy, pretože moje formuláre mali akcie ako: action = "admin / login / post" a musel som ich zmeniť tak, aby končili na .php action = "admin / login / post.php" takže mohli fungovať, ale vyžaduje to, aby ste zmenili prepis URI svojej triedy CI a nahradili tak tento .php z reťazca uri.


0 pre odpoveď č. 4

Mal som podobný problém a vyskúšal som všetko, čo je tu uvedené. Bolo to veľmi jednoduché, keď som na to prišiel, nepomenoval som svoje vstupné premenné vo formulári. Parameter mena mi chýbal.

<input type="name" placeholder="Name" name="name">