Pokaż wyniki 1 do 9 z 9

Temat: problem z cgi

  1. #1

    Domyślnie problem z cgi

    Witam.
    Piszę w perlu skrypt cgi, który kompiluje plik .tex do formatu pdf a rezultat przesyła do przęglądarki. Problem w tym, że po każdym wywołaniu

    $i = system("pdflatex nazwa.tex");

    zmienna $i != 0 (niepowodzenie). Napisałem zwykły skrypt perla, który zawiera taką instrukcję i wszystko jest w porządku. Szwankuje tylko w cgi. Proszę o pomoc.

  2. #2
    Zarejestrowany
    Jun 2006
    Skąd
    rand(.eu)
    Postów
    8,748

    Domyślnie

    1. Skrypt CGI musi odeslac naglowek MIME - niech zgadne... przegladarka dostaje blad "500 Internal Server Error"...
    2. Jak sa juz naglowki to proponuje podac pelna sciezke do pdflatex
    3. Jesi user ma prawo jakos wybrac plik .tex ktory chce zobaczyc to upewnij sie ze nie robi directory traversal itd bo delikwent bedzie w stanie przeczytac wiekszosc plikow... albo ustawi nazwe pliku na:
    Kod:
    ;cat /etc/passwd
    Ogolnie mowiac walidacja wejscia
    ctrl-alt-del.cc - soft reset site for IT admins and other staff :-)

  3. #3

    Smile

    1. Tutaj nie mam problemu ze skryptem cgi, bo wszystko odbywa się tak jak http nakazuje (application/pdf, blank line, itp) tylko z kodem zwracanym przez funkcję system(). Cgi wykonuje się poprawnie jednak kompilacja pliku .tex nie zachodzi. Za każdym razem otrzymuję z funkcji system() kod 256 (0 oznacza wszystko ok).

    2. Próbowałem podać pełną ścieżkę i nic. Właściwie chyba nie jest to konieczne bo ścieżka jest w zmiennej systemowej, a w zwykłym skrypcie perl system("pdflatex plik.tex") działa bez problemu.

    3. Tutaj oczywiście nie pozwolę na kompilację czego tylko dusza zapragnie

  4. #4
    Zarejestrowany
    Jun 2006
    Skąd
    rand(.eu)
    Postów
    8,748

    Domyślnie

    hehe no to doskonale

    Co moge zaproponowac... zobacz tak trywialne rzeczy jak uprawnienia - czasami bywa i tak, ze user ktory odpala CGI (apache, www-data, nobody) nie ma prawa dojsc albo do binarki ktora odpala system() albo do pliku ktory ma przetworzyc - mowie o uprawnieniach plikow i katalogow powyzej (badzo czesty blad przy usytawianiu CVS).

    Mozesz zawsze sprobowac wywolac system jako

    Kod:
    system("/cokolwiek/bin/pdflatex", $tex_file);
    w ten sposob jasno podajesz co jest polecenie a co parametr - spotkalem sie raz z przypadkiem gdy takie wywolanie pomoglo. W razie czego rzuc kodem na forum PM to zajrze i moze uda sie problem rozwiazac.
    ctrl-alt-del.cc - soft reset site for IT admins and other staff :-)

  5. #5

    Domyślnie

    Zrobiłem mały eksperyment. Zamiast
    Kod:
    system("pdflatex", "cos.tex")
    wpisałem
    Kod:
    system("javac", "cos.java")
    i... działa. Mam plik cos.class. Wracając do pierwotnej wersji. W logach apacha można zobaczyć komunikat: pdflatex: The file system path could not be retrieved. Zrobiłem coś takiego http://zkwarl.blogspot.com/2006/08/l...eview-tex.html
    i... znów mam 256 zamiast 0

  6. #6
    Zarejestrowany
    Jun 2006
    Skąd
    rand(.eu)
    Postów
    8,748

    Domyślnie

    Jest mozliwe ze user ktory odpala apacza ma inne sciezki niz inni i dlatego nie widzi polecenia... nadal proponuje podac pelna sciezke
    ctrl-alt-del.cc - soft reset site for IT admins and other staff :-)

  7. #7

    Domyślnie

    Podałem...

  8. #8

    Domyślnie

    W dalszym ciągu nie rozumiem dlaczego mogę kompilować pliki .java, a nie mogę .tex pod Windows Vista. Problem rozwiązałem w następijący sposób:
    1) przesiadłem się na Linux'a,
    2) nadałem odpowiednie uprawnienia do katalogu /usr/lib/cgi-bin
    Kod:
    chmod 757 /usr/lib/cgi-bin
    W sumie rozwiązanie jest banalne i oczywiste.

  9. #9
    Zarejestrowany
    Jun 2006
    Skąd
    rand(.eu)
    Postów
    8,748

    Domyślnie

    hehe... moze werdykt bedzie zlosliwy ale jak najbardziej celowy... "Windows"
    ctrl-alt-del.cc - soft reset site for IT admins and other staff :-)

Podobne wątki

  1. use CGI - generowanie stron (start_html)???
    By Efraim in forum Perl/Python/TCL/Prolog
    Odpowiedzi: 1
    Autor: 11-14-2007, 21:42

Zasady Postowania

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •  
Subskrybuj