Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wykonywanie aplikacji z rozszerzeniem .out
Forum PHP.pl > Forum > Serwery WWW
NickOver
Cześć.
W ramach poszerzania wiedzy postanowiłem zacząć pisać aplikacje w c++ a nie w php. Napisałem prosty hello world, skompilowałem do hello.out jednak mam problem z wykonaniem kodu. Mianowicie nie mam pojęcia jak powiedzieć serwerowi że ma wykonywać skompilowane pliki.
W mime.types dodałem w linijce text/x-c++hdr:
Cytat
out

Następnie w apache.conf dodałem
<Directory /var/www/html/cpp/>
Options +ExecCGI
AddHandler cgi-script .cgi .pl .out
Require all granted
</Directory>
Restart i niestety tylko pobiera plik. W tych internetach nic nie mogłem znaleźć więc liczę na waszą pomoc.
Pozdrawiam
NickOver

[EDIT]
Dodam że plik poprawnie wykonuje się na serwerze.

Niestety nie mogłem znaleźć opcji edycji więc piszę jako nowy post. Prosił bym moda o połączenie postów.
Zmieniłem wpisy w pliku apache.conf:

<Directory /var/www/html/cpp/>
AllowOverride All
Options +ExecCGI
AddHandler cgi-script .out
Require all granted
</Directory>
I doszedłem do momentu w którym skompilowany plik się wyświetla a nie pobiera, jednakże widzę sam kod maszynowy. Macie może pomysły o co chodzi?
vokiel
A czy ten program wysyła odpowiednie nagłówki (Content-type: text/html) ?

Edit:
Zrobiłem szybki test:

Program:
  1. #include <stdio.h>
  2.  
  3. int main(void)
  4. {
  5. printf("Content-type: text/html\n\n");
  6. printf("<html><title>Hello</title><body>\n");
  7. printf("<p>Prosty Hello World</p>\n");
  8. printf("</body></html>");
  9. return 1;
  10. }


Skompilowałem, wrzuciłem do katalogu i nadałem uprawnienia:
  1. gcc prog.c -o prog.cgi
  2. cp prog.cgi /var/www/cgi-bin/prog.cgi
  3. chown apache:apache /var/www/cgi-bin/prog.cgi


Skonfigurowałem CGI:
[APACHE] pobierz, plaintext
  1. ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
  2. <Directory "/var/www/cgi-bin">
  3. AllowOverride None
  4. Options ExecCGI
  5. AddHandler cgi-script .cgi .out
  6. SetHandler cgi-script
  7. Order allow,deny
  8. Allow from all
  9. </Directory>
[APACHE] pobierz, plaintext


Restart Apache, test przez http://localhost/cgi-bin/prog.out i gotowe - działa.
Dejmien_85
C++ i CGI do web developingu? Naprawde aż tak bardzo chcesz cofnąć się do lat '90?

Nie tak teraz robi się internety. C++ ma kilka webowych frameworków, ale powiedzmy sobie szczerze, ten język nie jest wykorzystywany do WEB i robienie na nich internetów to ból w tyłku.

Już lepiej zabierz się za Javę, albo C# - te języki świetnie się do tego nadają i posiadają masę narzędzi do web-developerki.
NickOver
Cytat(vokiel @ 27.01.2016, 22:42:08 ) *
A czy ten program wysyła odpowiednie nagłówki (Content-type: text/html) ?

Edit:
Zrobiłem szybki test:

Program:
  1. #include <stdio.h>
  2.  
  3. int main(void)
  4. {
  5. printf("Content-type: text/html\n\n");
  6. printf("<html><title>Hello</title><body>\n");
  7. printf("<p>Prosty Hello World</p>\n");
  8. printf("</body></html>");
  9. return 1;
  10. }


Skompilowałem, wrzuciłem do katalogu i nadałem uprawnienia:
  1. gcc prog.c -o prog.cgi
  2. cp prog.cgi /var/www/cgi-bin/prog.cgi
  3. chown apache:apache /var/www/cgi-bin/prog.cgi


Skonfigurowałem CGI:
[APACHE] pobierz, plaintext
  1. ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
  2. <Directory "/var/www/cgi-bin">
  3. AllowOverride None
  4. Options ExecCGI
  5. AddHandler cgi-script .cgi .out
  6. SetHandler cgi-script
  7. Order allow,deny
  8. Allow from all
  9. </Directory>
[APACHE] pobierz, plaintext


Restart Apache, test przez http://localhost/cgi-bin/prog.out i gotowe - działa.

Nagłówki wysyła jednakże mam mniej ustawień dla katalogu w ustawieniach apache, jak i prawa wykonywalności są chyba tylko dla root'a więc to jest najprawdopodobniej przyczyną błędu. Zaraz odpalę serwer i ogarnę według Twoich porad.
[EDIT]
Zrobiłem dokładnie tak jak pisałeś. Nawet kod źródłowy przepisałem na Twój i plik jest pobierany zamiast wykonywany.


@Dejmien_85 Wiem, jak napisałem jest to w celach typowo do nauki, w c++ czuje się najpewniej z języków kompilowanych przez co napisałem w nim. I najprawdopodobniej nie powstanie tam nic innego oprócz formularza i obsługi jakiegoś sql'a bo nigdy tego nie robiłem.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.