web-dev-qa-db-fra.com

Pouvez PHP et ASP.Net fonctionnent ensemble au sein du même site Web dans IIS 7,5?

Une partie de notre site est réalisée sous PHP et une partie de notre site sous ASP.Net. Nous venons de configurer un nouveau serveur Web avec Windows Server 2008 R2 sur lequel IIS 7.5 est installé.

Je comprends que IIS 7+ prend en charge PHP, mais PHP et ASP.Net peuvent fonctionner côte à côte dans un seul site Web dans IIS. Sinon, devrais-je configurer un site Web pour le PHP pages et un site Web pour les pages ASP.Net?

25
Aaron

Vous devriez pouvoir exécuter les deux sur le même site, mais assurez-vous que l'AppPool du site exécute une configuration de pool ASP.NET "classique". L'AppPool par défaut route tout via ASP.NET, ce que vous ne voudrez pas pour vos pages PHP.

Sinon, ça devrait aller. Les chaînes de requête, les fichiers et les bases de données principales constituent le meilleur moyen de partager des données entre les pages. 

21
Cylon Cat

Oui, vous pouvez utiliser les deux sous le même site Web. Étant donné que les extensions de fichier sont mappées à des processus externes spécifiques, elles sont appelées indépendamment. Vous pouvez même utiliser Asp.Net pour sécuriser des fichiers .php avec FormsAuthentication en implémentant des mappages génériques dans IIS (je sais que 6/7 l’ont, mais je ne suis pas sûr de 5). Il est difficile de mélanger des données entre eux, car ils auront des processus externes séparés et donc des sessions séparées. La plupart des cookies seront lisibles sur les deux, mais les cookies sécurisés ne le seront pas.

8
Joel Etherton

Oui, vous pouvez, mais faites attention à ceci:

Si vous avez un wordpress sur votre "racine", et asp.net applications dans les dossiers en dessous 

(par exemple http://root.com/aspnetapp1/ ), et si vous suivez ces suggestions à propos de "urlrewrite" pour les permaliens dans wordpress, vous pouvez avoir des problèmes si vous essayez de configurer gestionnaires génériques "dans le fichier apsnetapp1.

Pour éviter les problèmes, le paramètre web.config de l'application root wordpress doit également comporter ce paramètre: 

    <location path="." inheritInChildApplications="false"> 
    <system.webServer>
...
    </system.webServer>
</location>

Sinon, votre gestionnaire générique ne sera jamais déclenché, car index.php à partir de la racine capturera toutes vos demandes dans une URL, par exemple: http://root.com/aspnetapp1/api/ *

3
foxontherock

Oui, PHP peut être implémenté de manière transparente dans ASP.NET 3.5/4.0.

Allez sur http://phalanger.codeplex.com/ (ou http://www.php-compiler.net/ ) et téléchargez la dernière version de Phalanger. Installez dans Visual Studio et le tour est joué!

Phalanger - le compilateur PHP pour .NET

Bienvenue dans Phalanger - Un moteur d'exécution PHP complet avec compilateur pour Framework .NET/Mono. Phalanger est une implémentation open source moderne de PHP, compatible avec la vaste gamme de codes existants PHP. Dans De plus, Phalanger offre aux développeurs d’applications PHP beaucoup de nouvelles les possibilités; d'améliorer les performances et d'utiliser moderne environnements, pour tirer parti d’une intégration .NET unique et transparente.

1
Apache

Support ASP.NET et PHP

Développez, déployez et gérez facilement des applications Web en utilisant votre choix des langues. De ASP.NET à PHP, IIS7 fournit un puissant et environnement de serveur Web flexible pour le Web le plus populaire au monde applications.

(Source: http://www.iis.net/overview/choice/aspnetandphpsupport )

J'ai essayé de mettre un fichier test.php (avec conent: <?php phpinfo(); ?>) sur le site Web ASP.NET existant (utilisez un serveur réel à l'adresse https://somee.com ). Je savais qu'ASP.NET et PHP avaient travaillé ensemble.

Lire la suite: 
http://www.w3schools.com/aspnet/webpages_php.asp
https://technet.Microsoft.com/en-us/library/hh994592.aspx

0
foobarfuu

ASPetPHPpeuvent être utilisés sur les fenêtres. Tant qu'ils sont complètement séparés et ne sont pas dépendants les uns des autres. Par exemple, lorsque vous utilisez des chaînes de requête (i.e file.php?var=1&var2=bla), les choses se compliquent lorsque vous devez transférer ces variables dans le fichier ASP ou inversement.

Donc, tant que les 2 systèmes sont totalement indépendants l'un de l'autre, cela devrait fonctionner correctement.

Vous pouvez également trouver des incompatibilités avec cookies et sessions . Ceux-là aussi peuvent être adoptés mais pas facilement.

0
Wazy

Vous pouvez exécuter les deux sur le même site, mais vous ne pouvez pas vous parler à moins que vous ne configuriez un système de messagerie ou que vous ne partagiez de stockage. Ce sont des applications de nature totalement différente.

Une autre possibilité consiste à appeler votre code .NET depuis PHP:

Un morceau de code écrit en C # comme ceci:

string javascript = "";
Microsoft.Ajax.Utilities.Minifier m = new Microsoft.Ajax.Utilities.Minifier();
Microsoft.Ajax.Utilities.CodeSettings settings = new Microsoft.Ajax.Utilities.CodeSettings();
settings.OutputMode = Microsoft.Ajax.Utilities.OutputMode.SingleLine;
settings.PreserveFunctionNames = false;
string minified = m.MinifyJavaScript(javascript, settings);

Ressemblera à ceci sur PHP:

$minifier = netMinifier::Minifier_Constructor();
$settings = netCodeSettings::CodeSettings_Constructor();
$csssettings = \ms\Microsoft\Ajax\Utilities\netCssSettings::CssSettings_Constructor();
$settings->OutputMode(\ms\Microsoft\Ajax\Utilities\netOutputMode::SingleLine());
$settings->PreserveFunctionNames(FALSE);
$settings->QuoteObjectLiteralProperties(TRUE);
$result = $minifier->MinifyStyleSheet($css, $csssettings, $settings)->Val();

De:

http://www.drupalonwindows.com/fr/blog/calling-net-framework-and-net-assemblies-php

0
davidbcn

Oui, ce ne sera pas un problème. Même certains hôtes partagés Windows proposent des plans PHP - Hébergement Windows PHP.

0
Wazy