2011-01-21 6 views
25

私たちのサイトの一部はPHPで行われ、私たちのサイトの一部はASP.Netで行われます。 Windows Server 2008 R2にIIS 7.5がインストールされた新しいWebサーバーを設定するだけです。PHPとASP.NetをIIS 7.5の同じWebサイトで一緒に実行できますか?

IIS 7以上でPHPをサポートしていますが、PHPとASP.NetをIISの単一のWebサイト内で並列実行できること、またはPHPページと1つのWebサイトを設定する必要があることを理解していますASP.NetページのWebサイト?

+0

両方のハンドラを使用することは可能ですが、明示的な拡張子を使用する必要があります。 .aspxと.php。 – tomasmcguinness

+0

明示的な拡張機能を使って何を意味するかを詳しく説明できますか? – Aaron

答えて

20

両方を同じサイトで実行できるはずですが、サイトのAppPoolが「従来の」ASP.NETプール構成を実行していることを確認してください。デフォルトのAppPoolはASP.NETを介してすべてをルーティングします。そのため、PHPページには必要ありません。

それ以外は問題ありません。クエリ文字列、ファイル、およびバックエンドデータベースは、ページ間でデータを共有するための最良の方法です。

+2

クラシックモードにする必要はありません。問題なく統合モードで動作するいくつかのソリューションがあります。 – Shagglez

+1

あなた...私のIISセットアップで何が間違っていたの3時間の長時間の狩りを解決...アップ投票 – SomeShinyObject

+0

@Shagglez私はPHP 5.5をWindows Server 2008 R2 Standard ServerにIIS 7.5でインストールしました。統合モードのASP.NET WebアプリケーションでPHPファイルを実行する方法を指定してください。 – user1338998

0

はい、問題はありません。一部のWindows共有ホストでさえ、PHPプランを提供しています - Windows Hosting PHP

+1

私はあなたがIISでWindows上でPHPを実行できることを理解していますが、私の質問はIISで同じWEB SITE上でPHPとASP.Netを実行できるかどうかです。 – Aaron

+0

ああ...申し訳ありません..... – Wazzzy

0

ASPおよびPHPは、Windowsボックスで使用できます。彼らは完全に別々であり、お互いに依存していない限り。たとえば、クエリ文字列(i.e file.php?var=1&var2=bla)を使用すると、これらの変数をASPファイルに転送する必要がある場合や、その逆の場合には不便になります。

2つのシステムが完全に独立している限り、正常に動作するはずです。

クッキーのセッションと互換性がないことがあります。それらも渡すことはできますが、簡単にはできません。

+0

質問は同じボックスにではなく、同じサイトでASP.NETとPHPの両方を実行することについてです。 AppPoolとIISワーカープロセスを共有するため、この場合は完全に分離されていません。 –

8

はい、両方を同じウェブサイトで使用できます。ファイル拡張子は特定の外部プロセスにマップされるので、それらは独立して呼び出されます。 IIS内でワイルドカードマッピングを実装することにより、Asp.NetをFormsAuthenticationで.phpファイルを保護することもできます(私は6/7にこれがありますが、約5はわかりません)。それらの間でデータを混在させることは、独立した外部プロセスを持ち、セッションを分離するので難しいです。ほとんどのクッキーは両方で読むことができますが、保護されたクッキーは使用できません。

+0

ファイル拡張子が同じハンドラにマップされているかどうかは、IIS AppPoolの構成によって異なります。この設定では、ASP.NETがすべてのファイル拡張子を処理するため、デフォルトのアプリケーションプールを使用することはできません。しかし、デフォルトのAppPoolが機能するはずです。 –

+0

@Cylon Cat - マッピングはハンドラマッピングで明示的に処理され、別々のISAPIModuleを指します。メモリオブジェクトがモジュールによってプール内で分離されるため、同じAppPoolを使用するかどうかは関係ありません。 Asp.Netはすべての拡張機能を処理しません。 –

+0

ここでは、IIS統合パイプライン(既定のアプリケーションプール)とクラシックモードの違いについて、IISが各モードでnonASP.NETファイルを処理する方法と構成方法について説明します。 http://learn.iis.net/page.aspx/244/how-to-take-advantage-of-the-iis7-integrated-pipeline/ –

1

はい、PHPはシームレスhttp://phalanger.codeplex.com/(またはhttp://www.php-compiler.net/)に移動し、指結びの最新バージョンをダウンロードするASP.NET 3.5/4.0に

を実装することができます。 Visual Studioとvoilaにインストールしてください!

指結び - .NET /モノラルフレームワークのためのフル機能を備えたPHPランタイム&コンパイラ - 指結びに、.NET

ようこそためのPHPコンパイラ。 PhalangerはPHPの最新のオープンソース実装 で、膨大な数の既存のPHPコードと互換性があります。 でPhalangerはPHPアプリケーション開発者に多くの新機能を提供します 可能性;最新の 環境を使用してパフォーマンスを向上させることから、シームレスなユニークな.NET統合を活用することができます。

0

ASP。NETとPHPのサポート

の言語を使用して、Webアプリケーションを開発、デプロイ、および簡単に管理できます。 ASP.NETからPHPにいたるまで、IIS7は世界で最も普及しているWeb アプリケーション用の強力な 柔軟なWebサーバー環境を提供します。

(出典:http://www.iis.net/overview/choice/aspnetandphpsupport):(https://somee.comで実サーバを使用)、既存のASP.NET Webサイトに

私が試したが(<?php phpinfo(); ?> conent付き)test.phpファイルを置きます。私は、ASP.NETとPHPが一緒に働いていることを知っていました。
http://www.w3schools.com/aspnet/webpages_php.asp
https://technet.microsoft.com/en-us/library/hh994592.aspx

0

あなたは同じサイト上の両方を実行することができますが、セットアップメッセージングシステムのいくつかの並べ替えまたはstorage.Theyを共有しない限り、お互いに話をすることはできません。

続きを読みます基本的に全く異なる性質のアプリケーションです。

別の可能性は、PHPからあなたの.NETコードを呼び出すことです:

次のようにC#で書かれたコードの一部:

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

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

は、PHP上で次のようになります。

投稿者:

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

3

はい、できますが、これに気を付ける:

あなたは下のフォルダにあなたの「根」、およびasp.netアプリケーションにワードプレスを使用している場合は、それ

(例えば、 http://root.com/aspnetapp1/)、 、wordpressのpermalinksの "urlrewrite"についてthese suggestionsに従うと、apsnetapp1で "ワイルドカードハンドラ"を設定しようとすると問題が発生する可能性があります。ルートからのindex.phpは、すべての要求をキャッチしますので

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

さもないと、あなたのワイルドカードハンドラが上げることはありません。問題を回避するために

、wordpressのルートアプリのweb.configファイルを設定することも持っている必要がありますたとえば、次のようにしてください。http://root.com/aspnetapp1/api/ *

関連する問題