Aby przetestować program CGI z wiersza poleceń, należy udawać środowisko, które serwer tworzy dla programu. CGI.pm ma specjalny tryb offline, ale często łatwiej mi go nie używać ze względu na dodatkową konfigurację, którą muszę wykonywać w przypadku wszystkiego, czego zazwyczaj oczekują moje programy.
W zależności od wykonania skryptu, wiąże się to ustawienie wielu zmiennych środowiskowych, które można zrobić ze skryptu otoki, który udaje się na serwerze:
#!/bin/bash
export HTTP_COOKIE=...
export HTTP_HOST=test.example.com
export HTTP_REFERER=...
export HTTP_USER_AGENT=...
export PATH_INFO=
export QUERY_STRING=$(cat query_string);
export REQUEST_METHOD=GET
perl program.cgi
Jeśli robisz to dla POST żądanie, środowisko jest nieco inna i trzeba dostarczyć dane POST na standardowym wejściu:
#!/bin/bash
export CONTENT_LENGTH=$(perl -e "print -s q/post_data/");
export HTTP_COOKIE=...
export HTTP_HOST=test.example.com
export HTTP_REFERER=...
export HTTP_USER_AGENT=...
export PATH_INFO=...
export QUERY_STRING=$(cat query_string);
export REQUEST_METHOD=POST
perl program.cgi < post_data
można zrobić to jak fantazja, jak trzeba i za każdym razem chcesz przetestować program, zmienia się dane w plikach query_string lub post_data . Jeśli nie chcesz tego robić w skrypcie powłoki, równie łatwo można utworzyć opakowujący skrypt Perla.
odsyłającym/podejście standardowe wejście środowiska zmienna współpracuje z dowolnej aplikacji CGI , Perl lub w inny sposób. – fennec
Ta rada jest dość pomijana, nie wspominając o tym, że przykładowa linia poleceń nie ma żadnej nadziei na działanie. –