2011-01-21 16 views
25

Una parte del nostro sito viene eseguita in PHP e una parte del nostro sito viene eseguita in ASP.Net. Abbiamo appena creato un nuovo server Web con Windows Server 2008 R2 con IIS 7.5 installato.Can PHP e ASP.Net possono essere eseguiti insieme nello stesso sito Web in IIS 7.5?

Comprendo che IIS 7+ supporta PHP, ma PHP e ASP.Net possono essere eseguiti parallelamente all'interno di un singolo sito Web in IIS oppure dovrei configurare un sito Web per le pagine PHP e uno sito web per le pagine ASP.Net?

+0

Dovrebbe essere possibile utilizzare entrambi i gestori, ma probabilmente sarà necessario utilizzare estensioni esplicite ad esempio .aspx e .php. – tomasmcguinness

+0

Puoi approfondire cosa intendi usando estensioni esplicite? – Aaron

risposta

20

Si dovrebbe essere in grado di eseguire sia nello stesso sito, ma essere sicuri che l'AppPool per il sito gestisce una configurazione del pool di ASP.NET "classico". L'AppPool predefinito instrada tutto attraverso ASP.NET, e non lo vorrai per le tue pagine PHP.

A parte questo, dovresti stare bene. Stringhe di query, file e database back-end saranno il modo migliore per condividere i dati tra le pagine.

+2

Non ha bisogno di essere in modalità classica - Ho diverse soluzioni in esecuzione in modalità integrata senza problemi. – Shagglez

+1

Lei ha appena ... risolto una ricerca di 3 ore per ciò che non funziona con la mia installazione di IIS ... voto in più – SomeShinyObject

+0

@Shagglez Ho PHP 5.5 installato su un server Windows Server 2008 R2 Standard con IIS 7.5. Indicare come posso eseguire file PHP in un'applicazione Web ASP.NET con modalità integrata. – user1338998

0

Sì, non sarà un problema. Anche alcuni host condivisi di Windows offrono piani PHP - Windows Hosting PHP.

+1

Capisco che è possibile eseguire PHP su Windows in IIS, ma la mia domanda è possibile eseguire PHP e ASP.Net sullo stesso sito Web in IIS. – Aaron

+0

Agh ... Spiacenti ..... – Wazzzy

0

ASP e PHP può essere utilizzato su finestre. Fintanto che sono completamente separati e non dipendono l'uno dall'altro. Ad esempio, utilizzando le stringhe di query (i.e file.php?var=1&var2=bla) le cose si complicano quando è necessario trasferire tali variabili nel file ASP o viceversa.

Quindi, fintanto che i sistemi di 2 sono totalmente indipendenti l'uno dall'altro, quindi dovrebbe funzionare bene.

È inoltre possibile trovare qualche incompatibilità con i cookie e sessioni. Anche quelli possono essere superati, ma non facilmente.

+0

La domanda riguarda l'esecuzione sia di ASP.NET che di PHP nello stesso SITO, non solo sulla stessa casella. Poiché condividono un oggetto AppPool e un processo di lavoro IIS, in questo caso non sono "completamente separati". –

8

Sì, è possibile utilizzare entrambi sotto lo stesso sito web. Poiché le estensioni dei file sono associate a processi esterni specifici, vengono chiamate indipendentemente. È anche possibile utilizzare Asp.Net per proteggere i file .php con FormsAuthentication implementando i mapping di caratteri jolly all'interno di IIS (so che 6/7 hanno questo, non sono sicuro di 5). Mescolare i dati tra di loro è complicato perché avranno processi esterni separati e quindi sessioni separate. La maggior parte dei cookie sarà leggibile da entrambi, ma i cookie protetti non lo saranno.

+0

La presenza o meno di estensioni di file associate allo stesso gestore dipende dalla configurazione di AppPool IIS. * NON * si desidera utilizzare il pool di applicazioni predefinito, poiché in tale configurazione ASP.NET gestisce tutte le estensioni di file. L'AppPool predefinito dovrebbe funzionare, però. –

+0

@Cylon Cat: i mapping vengono gestiti in modo esplicito nei mapping del Gestore e puntano a separare ISAPIModules. Non importa se si utilizza la stessa AppPool perché gli oggetti di memoria sarebbero separati dal pool dal pool. Asp.Net non gestisce tutte le estensioni. –

+0

Ecco una pagina che illustra le differenze tra la pipeline integrata di IIS (pool di app predefinito) e la modalità classica, con riferimento al modo in cui IIS gestisce i file non-ASP.NET in ciascuna modalità e in che modo configurare. http://learn.iis.net/page.aspx/244/how-to-take-advantage-of-the-iis7-integrated-pipeline/ –

1

Sì, PHP può essere perfettamente implementato in ASP.NET 3,5/4,0

Vai http://phalanger.codeplex.com/ (o http://www.php-compiler.net/) e scarica l'ultima versione di Phalanger. Installa in Visual Studio e voilà!

Phalanger - il compilatore PHP per .NET

Benvenuti Phalanger - full-optional PHP runtime & compilatore per .NET/Mono framework. Phalanger è la moderna implementazione open source di PHP, compatibile con la vasta gamma di codice PHP esistente. In aggiunta a Phalanger offre agli sviluppatori di applicazioni PHP molte nuove possibilità ; dal miglioramento delle prestazioni e dall'utilizzo degli ambienti moderni , per sfruttare l'integrazione unica e senza interruzioni di .NET.

0

ASP.Supporto NET e PHP

Sviluppare, distribuire e gestire facilmente le applicazioni Web utilizzando la propria scelta delle lingue. Da ASP.NET a PHP, IIS7 fornisce un potente ambiente server Web flessibile per le applicazioni Web più famose al mondo .

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

ho provato mettere un file test.php (con conent: <?php phpinfo(); ?>) al sito ASP.NET esistente (utilizzare il server reale al https://somee.com). Sapevo che ASP.NET e PHP hanno lavorato insieme.

Per saperne di più:
http://www.w3schools.com/aspnet/webpages_php.asp
https://technet.microsoft.com/en-us/library/hh994592.aspx

0

È possibile eseguire sia sullo stesso sito, ma non sarà in grado di parlare tra di loro a meno che non si imposta una sorta di sistema di messaggistica o condividere storage.They sono fondamentalmente applicazioni di completa natura diversa.

Un'altra possibilità è quella di chiamare il codice .NET da PHP:

Un pezzo di codice scritto in C# come questo:

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

sarà simile a questo su 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(); 

Da:

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

3

Sì, è possibile, ma attenzione per questo:

Se si dispone di un wordpress sul "root", e le applicazioni asp.net in cartelle sotto di essa

(per esempio http://root.com/aspnetapp1/), e se si segue these suggestions su "urlrewrite" per i permalink in wordpress, si può avere problemi se si tenta di configurare "gestori di caratteri jolly" in apsnetapp1.

Per evitare problemi, il web.config dell'applicazione radice wordpress deve anche avere quella impostazione:

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

Oppure, il gestore jolly non potrà mai alzare perché index.php dalla radice prenderà tutte le vostre richieste url come: http://root.com/aspnetapp1/api/ *

Problemi correlati