Newsgroup: it.comp.www.php
Titolo: [OT...ma dove vado?] CGI

Ho un semplicissimo codice C:
#include <stdio.h>
#include <string.h>
int main() {
    printf("HTTP/1.1 200 OK\r\n");
    printf("Content-type: text/html\r\n");
    printf("\r\n");
    printf("<html>\n");
    printf("<head><title>CGI Output</title></head>\n");
    printf("<body>\n");
    printf("<h1>Hello, world.</h1>\n");
    printf("</body>\n");
    printf("</html>\n");
    return 0;
}
Lo compilo e genero un eseguibile. Modifico l'estensione da .exe a .cgi.
Copio il file nella cartella cgi-bin del server remoto (su ION, WIN2003).
Se provo ad accedere adesso (anche magari creando un form con 
action="cgi-bin/hello.cgi"), mi dà il seguente errore:
Errore CGI
L'applicazione CGI specificata non ha restituito un insieme completo di 
intestazioni HTTP.
Ho chiesto all'area tecnica, e mi hanno detto che palesemente l'errore è 
nelle intestazioni che invio.
Ho aggiunto allora intestazioni come Content-length (con la lunghezza 
appropriata) e Server, ma continua a verificarsi lo stesso errore.
Eppure, se provo a lanciare l'eseguibile in locale, dalla shell, non noto 
nulla di errato.
Secondo voi, da che dipende?
(so di essere OT, ma non ho trovato nessun ng IT)
rob4you 

 (so di essere OT, ma non ho trovato nessun ng IT)
in effetti, it.comp.www.cgi l'hanno chiuso.
Ciao.
T.

 in effetti, it.comp.www.cgi l'hanno chiuso.
Un modo per dire.....il CGI è MORTOO!! :-)
rob4you 

 bohhh2?? :-))
Ah....son riuscito ad accedere alla cartella di log tramite web. Ma tanto 
non cambia nienteeeee! :-) Non c'è la segnalazione di nessun errore.....sono 
solo registrati tutti gli accessi e le richieste, in particolare quando ci 
accede al cgi non si nota nulla di anomalo: una comune richiesta GET. (non 
ho notato traccia delle risposte del server nei file di log).
rob4you 

 printf("HTTP/1.1 200 OK\r\n");
come ti hanno gia' detto.. togli quell'HTTP 200..
a me cosi' funziona..
#include <stdio.h>
#include <string.h>
int main (void) {
 printf("Content-Type: text/html; charset=ISO-8859-1\r\n");
 printf("\r\n");
 printf("<html>\n");
 printf("<head><title>CGI Output</title></head>\n");
 printf("<body>\n");
 printf("<h1>Hello, world.</h1>\n");
 printf("</body>\n");
 printf("</html>\n");
 return 0;
}
sei sicuro che il server sia configurato bene?
-- 
www.iuz-lab.info

> sei sicuro che il server sia configurato bene?
Ho riprovato, ma niente da fare.
Sul server posso fare ben poco circa la configurazione delle cgi. Ti posso 
solo dire che ne è consentito l'uso.
Mi viene il dubbio però che sia consentita solo l'esecuzione di script perl.
rob4you 

 Mi viene il dubbio però che sia consentita solo l'esecuzione di script perl.
Mi viene il dubbio che scrivi il testo con un editor su Windows, e che
pertanto ti mette un \r di troppo:
#!/bin/php\r\n
<? bla bla ?>
Error: "#!/bin/php\r" not found
Ciao,
 ___ 
/_|_\  Umberto Salsi
\/_\/  
www.icosaedro.it

 Error: "#!/bin/php\r" not found
Il mio sorgente č in C, e ho utilizzato per il ritorno a capo il \n. Come se 
non bastasse,  ho provato anche a mettere un \r\n, ma senza miglioramento.
Inoltre, il programma lo compilo e genero un eseguibile in locale (windows 
XP), e questo eseguibile (con estensione .cgi) lo copio nella cartella 
cgi-bin del server (Win 2003).
Comunque, il codice sorgente lo ho postato nel primo messaggio di questo 
thread, quindi puoi controllare tu stesso (ti ripeto, ho provato sia con \n 
sia con \r\n, ma NIENTE!).
rob4you 

 thread, quindi puoi controllare tu stesso
il codice va bene, il problema è nel server: ricontatta l'area tecnica,
di' loro che ad altri il codice funziona e vedi cosa ti dicono.
T.

 di' loro che ad altri il codice funziona e vedi cosa ti dicono.
Ecco la risposta dell'area tecnica:
"si, è possibile utilizzare programmi CGI scritti in codice C basta che 
restituisca delle intestazioni HTTP valide."
Ma dico io......c'è pazzia nell'area o sbaglio io? Che cavolo significa 
INTESTAZIONI HTTP VALIDE! le ho provate tutte, tutte quelle che avete detto 
voi, e oltre......e continua a darmi sempre lo stesso errore.
Da pazzia! Io scrivo il codice, lo compilo e genero un eseguibile, rinomino 
l'eseguibile da .exe a .cgi, sposto l'eseguibile nella cartella cgi-bin del 
server, richiamo la pagina da un browser......e continua a darmi SEMPREEE lo 
stesso errore di intestazioni!
rob4you

. :)
inoltre, leggiti questo:
http://bugs.php.net/bug.php?id=25863
prova, ma mi pare tu l'abbia già fatto, ad aggiungere questo header nel
sorgente in C:
	"Content-type: text/html\n\n";
ma non ci spererei troppo.
poi però fa' vedere questo agli admin:
http://support.microsoft.com/kb/217202/en-us
ormai è assodato che coi most-weird-bug c'è sempre di mezzo MS.
epperò gli esperti MS sanno bene fare gli UnloadBarrels:
http://www.microsoft.com/windowsxp/expertzone/chats/transcripts/04october26.mspx
"Delwin (Expert): 
Q: I tried to download some file and receive an error messages as below,
how to solve this problem? CGI Error The specified CGI application
misbehaved by not returning a complete set of HTTP headers. 
A: It sounds like the webserver from which you are trying to download is
having problems. You should contact the webmaster of that server."
LOL
Auguri! :P
T.
ps. non sai se gli altri utenti riescono ad usare i CGI?

 
[..]
non puoi farti cambiare o cambiarti le impostazioni in modo da inviare la
pagina anche con header non validi per controllare se e' tutto a posto?
altrimenti ti posso assicurare che con un numero sufficiente di telefonate
cordiali ad intervalli brevi al supporto tecnico tenderanno a farti
risolvere il problema in un tempo minore..
-- 
www.iuz-lab.info


Su quel server non ti so dire. Per quanto riguarda gli script Perl, quelli 
si, li riesco a eseguire anche io sul server. Ma eseguibili cgi, nulla da 
fare.
rob4you 

 risolvere il problema in un tempo minore..
Sono tenace....seguirò il tuo consiglio (soprattutto perché è un servizio 
per cui pago).
rob4you 

 per cui pago).
Sai cosa mi ha risposto l'area tecnica?
"
come può ben capire, non possiamo fornire supporto sulla programmazione.
Non consentiamo l'utilizzo dei nostri server come piattaforma di studio o 
per test di ogni genere, che potrebbero compromettere l'efficienza della 
macchina.
Per tale motivo il suo account verrà presto sospeso, potrà traferire i 
domini altrove in qualsiasi momento.
Come da formula soddisfatti o rimborsati, la preghiamo di indicarci un conto 
corrente su cui effettuare il rimborso.
"
Sarà giunto il momento di cambiare casa? :-)
Mi consigliereste qualche fornitore che offre php 5, mysql (possibilmente 
5), supporto CGI (anche con eseguibili scritti in C oltre che script in 
perl), possibilità di utilizzare le funzioni php come ad esempio exec e 
compagnia, supporto di cartelle protette, eventuale SSL e varie ed 
eventuali....il tutto a prezzi "interessanti"? :-)
rob4you 

 eventuali....il tutto a prezzi "interessanti"? :-)
quanto e' piccolo "interessanti"?

 (anche in privato se ti va)
Ti ho inviato in privato un'email.
rob4you 

 
ti dispiace mandarla di nuovo? non ho ricevuto niente
grazie

Lo compilo e genero un eseguibile. Modifico l'estensione da .exe a .cgi
Hai provato magari a non modificare l'estensione? Si sa mai che il server
non sappia come eseguire il file. In teoria dovrebbe, ma chissa'.
Leonardo empirico (ma a provare si fa presto)
-- 
Dawn is near, the time is short (Human aircraft! Hard to port!)
We eight reindeers of the night work as one in silent flight.
Let not one damn house pass by (Who taught that guy how to fly?)
Each year sees more girls and boys: how many of them can we bring toys?

 quanto e' piccolo "interessanti"?
Ho trovato ad esempio bluehost.com....che offre un bel po' di cose a
un'ottantina di dollari l'anno.
Considera però che io ho un dominio .eu, e alcuni fornitori mi hanno detto
che non possono effettuare il trasferimento completo, ma solo un redirect.
Tu cosa mi consigli?
Grazie,
rob4you

> ti dispiace mandarla di nuovo? non ho ricevuto niente
Comunque, per la cronaca, a dispetto di quanto mi ha detto l'area tecnica 
(che sosteneva che si potessero utilizzare cgi scritti in C, quindi già 
compilati), son giunto alla conclusione che il server accetta solo script 
perl, sia con estensione pl, sia con estensione cgi. Ecco perchè restituisce 
le "famigerate" intestazioni http non valide.....perchè in realtà non ci 
capisce un mazza di quello che gli arriva, perché il parser Perl tenta di 
leggere l'eseguibile C....ah si....bella cacca!!
rob4you 

 Tu cosa mi consigli?
innanzitutto di far cambiare (l'email del registrant che ad oggi risulta
essere  h_o_s_t_m_a_s_t_e_r_@_i_o_n_._i_t)
   e poi di postare su it.lavoro.professioni.webmaster
sia per i consigli su hosting che su "come muoversi"
(lurka un po' prima, se non vuoi essere mangiato al primo post)
P.S.
se mi mandi un email in privato ti dico con chi mi trovo bene io ...
non faccio pubblicita' (anche se non sono coinvolto) nel ng