Question

Mes scripts hébergés ont été déplacés et ne fonctionnent plus.

  

L'application CGI spécifiée   misbehaved en ne renvoyant pas complète   ensemble de têtes HTTP.

Je remarque que quelqu'un à ma société d'accueil a modifié mes scripts afin que là où je l'habitude d'avoir

use lib 'd:/myorig/LIB';

J'ai maintenant

use lib '//newhost/LIB';

Si ce travail?

J'ai essayé la suggestion de 1800 INFORMATION et a couru le script minimal de

#!perl -w
use lib '//whatever/lib';
print "success";

... qui a donné le même résultat.

Mise à jour : la suggestion de ysth de FatalsToBrowser a en effet révélé plus d'informations. Il semble que le chemin (ajouté par quelqu'un de la société d'hébergement) pourrait être erroné.

Update2 : La société d'hébergement dit maintenant que ces scripts, inchangé par rapport à l'esprit hôte précédent, jettent beaucoup d'erreurs de syntaxe. « Puisque nous ne pouvons pas déboguer vos scripts pour vous, nous vous suggérons de contacter le programmeur d'origine et leur demander de l'aide ». <grinds teeth>

Résolution partielle: La société d'hébergement a finalement réalisé qu'ils avaient pas les autorisations correctement définies. Ils ne sont toujours pas droit, et (Aargh) ils ne permettent pas les propriétaires de site pour définir le dossier permissionsn, même pas sur les dossiers au sein de leurs propres sites.

Était-ce utile?

La solution

Non le chemin est incomplète, elle a besoin à la fois un nom de serveur et un chemin d'accès complet. Il est une mauvaise pratique et parce qu'il exige que deux machines soient surveillées plutôt que pour votre application à la fonction.

Autres conseils

Je ne sais pas si cela devrait fonctionner ou non, mais mon intuition est que ce serait bien. Cependant, les deux lignes de use lib vous avez publié ne sont pas équivalents.

# go to the 'd' drive and use the 'myorigLIB' directory on that drive
use lib 'd:/myorigLIB';

# go to the 'newhostLIB' server - no path is specified - this looks invalid to me
use lib '//newhostLIB';

Peut-être que vous devez spécifier le chemin du partage sur le serveur? , Vous pourriez aussi avoir besoin de regarder les autorisations? Peut-être que l'utilisateur du CGI est en cours d'exécution comme ne peut pas accéder ce chemin réseau?

En outre, vous pouvez écrire un programme simple (non CGI) pour tester votre théorie et juste l'exécuter:

#!perl -w
use lib '//whatever/lib';
print "success";

Ensuite, il suffit d'exécuter que sur le serveur si vous pouvez voir ce qui se passe.

The specified CGI application misbehaved by not returning a complete set of HTTP headers.

C'est un non-erreur. Si vous êtes chanceux, votre société d'hébergement fera un journal d'erreur à votre disposition qui montrera l'erreur réelle que Perl est en train de mourir avec. Si non, envisager d'utiliser

use CGI::Carp "fatalsToBrowser";

pour les tests. (Si vous êtes paranoïaque (ce qui est une mauvaise chose à être), vous ne laissant pas qui a permis une fois que vous avez terminé les tests, car les erreurs peuvent souvent fournir des informations sur votre code ou même votre base de données qui peut aider un chapeau noir exploiter la sécurité des trous.)

Je sais que je suis tombé du mal à essayer d'utiliser des lecteurs et des chemins de unc apache parce que l'utilisateur apache n'a pas été autorisé à utiliser les lecteurs réseau. Cela a été difficile à comprendre - mais il est possible de le faire. Cela peut être un problème lié.

#!perl -w

print "HTTP/1.0 200 OK\nContent-Type: text/plain\n\n";

my $path = "//whatever/lib";
print "\nExists ", -e $path;
print "\nDirectory ", -d $path;
print "\nReadable ", -r $path;
print "\nListing:\n";
print "\t$_\n" for glob "$path/*";
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top