2010-12-10 57 views
2

J'ai un problème étrange ici. Je déplace un site (de travail) vers un nouveau serveur apache auquel je n'ai pas d'accès direct (je dois passer par deux personnes pour faire les choses).

Le site utilise un script perl appelé adframe pour analyser les modèles html. Les URL avec lesquelles il s'appelle ressemblent à /cgi-bin/adframe/index.html?x=something avec adframe étant le script. Le suffixe manquant n'a jamais causé de vrais problèmes. Mais sur ce nouveau serveur Ubuntu $ENV{'QUERY_STRING'} est toujours vide. $ENV{'REQUEST_METHOD'} s'affiche correctement en tant que GET, mais la chaîne query_string ne montre rien ...

Les scripts * .cgi réguliers montrent la chaîne query_string sans problèmes. D'après les journaux, j'ai compris que le serveur semble exécuter fastcgi, mod_fcgid et le serveur n'accepte même pas .pl comme extension pour les scripts. Je n'ai pas beaucoup d'expérience avec le logiciel serveur, mais j'ai pensé que le serveur pourrait ne pas accepter l'adframe comme un script cgi et ne pas passer correctement la query_string ... Quelqu'un peut-il me donner quelques indices sur l'endroit où je pourrait pointer l'administrateur ou peut-être quelque chose que je pourrais faire dans. Htaccess moi-même? Quoi qu'il en soit, adframe est reconnu comme un script cgi !? (si c'est le problème ...)

Toute aide est appréciée! thomas

EDIT: J'ai trouvé plus d'informations: Le serveur semble être en cours d'exécution d'un cache VERNIS ... des thats est la principale différence à mes configurations habituelles ... En outre, la façon dont le script fonctionne est, si vous appelez/cgi-bin/adframe/somedir/unfichier.html? x = quelque chose, $ ENV {PATH_INFO} indique quel template analyser et $ ENV {QUERY_STRING} est, bien, la chaîne de requête. Maintenant, la chaîne de requête est vide, mais si j'appelle/cgi-bin/adframe? X = quelque chose (sans PATH_INFO), la chaîne de requête apparaît! Est-ce que quelqu'un a une idée de ce qui se passe ici? merci!

+0

Est-ce qu'il est réellement exécuté? (par exemple, renvoie-t-il une erreur ou fonctionne-t-il correctement comme s'il était appelé sans paramètres)? En outre, que se passe-t-il si vous envoyez une requête POST correspondante au serveur? – DVK

+0

Salut, merci pour les conseils. Oui, il est exécuté comme si aucun paramètre n'était passé et oui, le POST atteint le script (via STDIN) ... – thomas

+0

J'ai aussi essayé $ cgi-> param() pour obtenir la chaîne de requête. Pas de chance. – thomas

Répondre

1

Vous l'avez. Le cache VARNISH dépouille toutes les chaînes de requête du contenu statique (* .html etc) ... ouf

+0

+1 pour le comprendre! – DVK

0

Juste rencontré le même problème. Je suis un débutant complet dans les scripts Perl.

J'ai essayé suivante:

@values = split (/&/, $ENV{'QUERY_STRING'}); 

mais il n `travailler

cela a fonctionné:

@values = split (/&/, "$ENV{'QUERY_STRING'}"); 

juste au cas où, si d'autres ont couru dans newbies le même problème.