2011-01-21 68 views
25

Una parte de nuestro sitio se realiza en PHP y una parte de nuestro sitio se realiza en ASP.Net. Acabamos de configurar un nuevo servidor web con Windows Server 2008 R2 que tiene IIS 7.5 instalado.¿Pueden funcionar PHP y ASP.Net juntos dentro del mismo sitio web en IIS 7.5?

Entiendo que IIS 7+ es compatible con PHP, pero PHP y ASP.Net pueden funcionar uno al lado del otro en un único sitio web en IIS, o tendría que configurar un sitio web para las páginas de PHP y otro sitio web para las páginas ASP.Net?

+0

Debe ser posible utilizar ambos controladores, pero es probable que necesite utilizar extensiones explícitas, por ejemplo .aspx y .php. – tomasmcguinness

+0

¿Puede explicar en detalle a qué se refiere al usar extensiones explícitas? – Aaron

Respuesta

20

Debe poder ejecutar ambas en el mismo sitio, pero asegúrese de que la AppPool para el sitio ejecuta una configuración de grupo ASP.NET "clásica". El AppPool predeterminado enruta todo a través de ASP.NET, y no querrá eso para sus páginas PHP.

Aparte de eso, deberías estar bien. Las cadenas de consulta, los archivos y las bases de datos de back-end serán la mejor forma de compartir datos entre páginas.

+2

No necesita estar en modo clásico: tengo varias soluciones ejecutándose en modo integrado sin problemas. – Shagglez

+1

Usted señor ... acaba de resolver una búsqueda de 3 horas de largo por lo que estaba mal con mi configuración de IIS ... up vote – SomeShinyObject

+0

@Shagglez Tengo PHP 5.5 instalado en un servidor estándar Windows Server 2008 R2 con IIS 7.5. Indique cómo puedo ejecutar archivos PHP en una aplicación web ASP.NET con modo integrado. – user1338998

0

Sí, no será un problema. Incluso algunos hosts compartidos de Windows ofrecen planes de PHP: Windows Hosting PHP.

+1

Entiendo que puede ejecutar PHP en Windows en IIS, pero mi pregunta es si puede ejecutar PHP y ASP.Net en el mismo SITIO WEB en IIS. – Aaron

+0

Agh ... Lo siento ..... – Wazzzy

0

ASP y PHP se puede utilizar en cajas de Windows. Siempre y cuando estén completamente separados y no dependan el uno del otro. Por ejemplo, al usar cadenas de consulta (i.e file.php?var=1&var2=bla), las cosas se complican cuando necesita transferir esas variables al archivo ASP o viceversa.

Así que mientras los 2 sistemas sean totalmente independientes entre sí, entonces debería funcionar bien.

También puede encontrar alguna incompatibilidad con cookies y sesiones. Esos también se pueden pasar, pero no fácilmente.

+0

La pregunta es acerca de ejecutar ASP.NET y PHP en el mismo SITIO, no solo en el mismo cuadro. Debido a que comparten un AppPool y un proceso de trabajo de IIS, no están "completamente separados" en este caso. –

8

Sí, puede utilizar ambos en el mismo sitio web. Como las extensiones de archivo se asignan a procesos externos específicos, se llaman de forma independiente. Incluso puede usar Asp.Net para proteger archivos .php con FormsAuthentication mediante la implementación de asignaciones de comodines dentro de IIS (sé que 6/7 tiene esto, no estoy seguro acerca de 5). Mezclar datos entre ellos es complicado porque tendrán procesos externos separados y, por lo tanto, separarán las sesiones. La mayoría de las cookies serán legibles en ambos, pero las cookies no serán seguras.

+0

Si las extensiones de archivo se asignan o no al mismo controlador depende de la configuración de IIS AppPool. * * NO * desea utilizar el grupo de aplicaciones predeterminado, porque en esa configuración, ASP.NET maneja todas las extensiones de archivo. Sin embargo, la AppPool predeterminada debería funcionar. –

+0

@Cylon Cat: las asignaciones se manejan de forma explícita en las asignaciones del Manejador, y apuntan a ISAPIModules separados. No importará si usa el mismo AppPool porque el módulo segregará los objetos de memoria dentro del grupo. Asp.Net no maneja todas las extensiones. –

+0

Aquí hay una página que analiza las diferencias entre la interconexión integrada de IIS (grupo de aplicaciones predeterminado) y el modo clásico, con referencia a cómo maneja IIS los archivos que no son ASP.NET en cada modo y cómo configurarlo. http://learn.iis.net/page.aspx/244/how-to-take-advantage-of-the-iis7-integrated-pipeline/ –

1

Sí, PHP se puede implementar sin problemas en ASP.NET 3,5/4,0

Ir a http://phalanger.codeplex.com/ (o http://www.php-compiler.net/) y descargar la última versión de Phalanger. Instalar en Visual Studio y listo!

Phalanger - el compilador de PHP para .NET

Bienvenido a Phalanger - tiempo de ejecución de PHP con todas las funciones & compilador para .NET/Mono marcos. Phalanger es la implementación moderna de código abierto de PHP, compatible con la amplia gama de códigos PHP existentes. En Además Phalanger ofrece a los desarrolladores de aplicaciones PHP muchas nuevas posibilidades ; desde la mejora del rendimiento y el uso de los entornos modernos , hasta el aprovechamiento de la integración .NET única y sin problemas.

0

ASP.Soporte para NET y PHP

Desarrolle, implemente y administre fácilmente aplicaciones web usando su elección de idiomas. Desde ASP.NET a PHP, IIS7 proporciona un entorno de servidor web poderoso y para las aplicaciones Web más populares del mundo.

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

intenté poner un archivo test.php (con conent: <?php phpinfo(); ?>) a la página web ASP.NET existente (usar el servidor real en https://somee.com). Sabía que ASP.NET y PHP han trabajado juntos.

Leer más:
http://www.w3schools.com/aspnet/webpages_php.asp
https://technet.microsoft.com/en-us/library/hh994592.aspx

0

Usted puede ejecutar tanto en el mismo sitio, pero no será capaz de hablar el uno al otro a menos que algún tipo de configuración de sistema de mensajes o compartir storage.They son básicamente aplicaciones de naturaleza completamente diferente.

Otra posibilidad es llamar a su código de .NET desde PHP:

Un pedazo de código escrito en C# como esto:

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); 

se verá así en 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/en/blog/calling-net-framework-and-net-assemblies-php

3

Sí se puede, pero cuidado con esto:

Si usted tiene un wordpress en su "raíz", y aplicaciones ASP.NET en carpetas bajo ella

(por ejemplo, http://root.com/aspnetapp1/), y si sigue these suggestions sobre "urlrewrite" para enlaces permanentes en WordPress, puede tener problemas si intenta configurar "manejadores de comodines" en el apsnetapp1.

Para evitar problemas, el web.config de la aplicación de la raíz de WordPress también debe tener esa configuración:

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

O de lo contrario, el controlador de comodín nunca se elevará debido a index.php desde la raíz cogerá todas sus peticiones url como: http://root.com/aspnetapp1/api/ *

Cuestiones relacionadas