2009-03-23 15 views
0

Je cherchais un serveur web pour mon projet mais je n'ai pas été capable de me satisfaire. J'ai besoin d'un serveur http qui supporte les scripts CGI (exe) compilés, pour Windows, et qui doit pouvoir utiliser des chemins relatifs. Ce serait un bonus si le serveur pouvait être aussi léger que possible.Besoin d'un serveur http avec des critères spécifiques

La partie la plus difficile dans ma recherche jusqu'à présent est de trouver un serveur qui supporte à la fois CGI et a un support de chemin relatif. Quand je dis chemin relatif, je veux dire le répertoire racine du serveur. Je veux pouvoir emballer ceci avec mon projet et par conséquent les chemins dans les dossiers de conf ne peuvent pas être absolus. Abyss Web est le seul que j'ai réussi à satisfaire à tous les critères, mais leur licence est exclusive et gratuite pour un usage personnel.

EDIT: J'ai trouvé l'erreur dans mes habitudes. J'ai commencé le processus via cmd à la racine. Ainsi, les chemins relatifs utilisés par apache dans la conf étaient relatifs à l'endroit où j'étais, à la racine. En changeant dans le répertoire racine et en exécutant le processus là, tout fonctionne comme l'a mentionné gbjbaanb. Mais je suppose que le contexte de ma question est peut-être encore valide. Si je devais exécuter le serveur en tant que processus dans un programme (C# .NET), quel serait alors le 'répertoire courant'? Devrais-je m'assurer que j'ai changé la variable d'environnement de répertoire en cours avant de la lancer?

Répondre

4

Qu'est-ce qui ne va pas avec Apache? Vous pouvez définir DocumentRoot sur n'importe quel répertoire (même si je ne l'ai pas essayé pour Windows sur C :)

Cela s'applique également au répertoire racine du serveur Web - ne commencez pas la directive par/et cela fonctionne.

0

J'ai rapidement démarré une version fictive du serveur que je suis supposé utiliser et il semble que gbjbaanb soit aussi valide pour Windows. Comme avec * nix, les chemins relatifs fonctionnent en fonction de ce que le répertoire courant est quand Apache est lancé. Donc, pour Windows, assurez-vous de définir la variable d'environnement du répertoire en cours sur celui auquel vous voulez que Apache soit relatif. Pour .NET, vous venez de définir System.IO.Directory.SetCurrentDirectory() ou System.Environment.CurrentDirectory de manière appropriée. Je suppose que pour * nix, vous devriez soit cd dans le répertoire avant de courir ou utiliser chroot.