Могут ли PHP и ASP.Net работать вместе на одном веб-сайте в IIS 7.5?

Часть нашего сайта выполняется на PHP, а часть нашего сайта выполняется в ASP.Net. Мы просто создали новый веб-сервер с Windows Server 2008 R2, на котором установлен IIS 7.5.

Я понимаю, что IIS 7+ поддерживает PHP, но PHP и ASP.Net могут работать бок о бок на одном веб-сайте в IIS или мне нужно настроить один веб-сайт для страниц PHP и одного веб-сайта сайта для страниц ASP.Net?

Ответ 1

Вы должны иметь возможность запускать оба на одном сайте, но убедитесь, что AppPool для сайта использует "классическую" конфигурацию пула ASP.NET. По умолчанию AppPool маршрутизирует все через ASP.NET, и вы не захотите этого для своих страниц PHP.

Кроме этого, все должно быть хорошо. Строки запроса, файлы и внутренние базы данных будут лучшим способом обмена данными между страницами.

Ответ 2

Да, вы можете использовать оба сайта под одним и тем же сайтом. Поскольку расширения файлов сопоставляются с определенными внешними процессами, они вызываются независимо. Вы даже можете использовать Asp.Net для защиты файлов .php с помощью FormsAuthentication, реализуя сопоставления подстановочных знаков в IIS (я знаю, что у 6/7 есть это, не уверен около 5). Смешивание данных по ним сложно, потому что они будут иметь отдельные внешние процессы и, следовательно, отдельные сеансы. Большинство файлов cookie будут читаемы для обоих, но защищенных файлов cookie не будет.

Ответ 3

Да, вы можете, но следите за этим:

Если у вас есть wordpress на вашем "root" и asp.net-приложениях в папках под ним

(например, http://root.com/aspnetapp1/), и если вы будете следовать этим предложениям об "urlrewrite" для постоянных ссылок в Wordpress, у вас могут возникнуть проблемы, если вы попытаетесь настроить "подстановочные обработчики" в apsnetapp1.

Чтобы избежать проблем, файл web.config корневого приложения wordpress также должен иметь этот параметр:

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

Или иначе, ваш обработчик подстановки никогда не будет повышаться, потому что index.php от root поймает все ваши запросы, например: http://root.com/aspnetapp1/api/ *

Ответ 4

Да, это не проблема. Даже некоторые общие хосты Windows предлагают планы PHP - Windows Hosting PHP.

Ответ 5

Да, PHP можно легко внедрить в ASP.NET 3.5/4.0

Перейдите в http://phalanger.codeplex.com/ (или http://www.php-compiler.net/) и загрузите последнюю версию Phalanger. Установите в Visual Studio и вуаля!

Phalanger - компилятор PHP для .NET

Добро пожаловать в Phalanger - полнофункциональная среда выполнения и компилятор PHP для .NET/Mono. Phalanger - современная реализация с открытым исходным кодом PHP, совместимый с огромным массивом существующего PHP-кода. В добавление Phalanger дает разработчикам PHP-приложений много новых возможности; от повышения производительности и использования современных среды, чтобы использовать бесшовную уникальную интеграцию .NET.

Ответ 6

ASP и PHP можно использовать в окнах. Пока они полностью разделены и не зависят друг от друга. Например, при использовании строк запроса (i.e file.php?var=1&var2=bla) все становится беспорядочным, когда вам нужно передать эти переменные в файл ASP или наоборот.

Итак, пока 2 системы полностью независимы друг от друга, тогда она должна работать нормально.

Вы также можете найти несовместимость с кукисами и сеансами. Те же могут быть переданы, но не легко.

Ответ 7

Поддержка ASP.NET и PHP

Разработка, развертывание и простое управление веб-приложениями по вашему выбору языков. От ASP.NET до PHP, IIS7 предоставляет мощные и гибкая среда веб-сервера для самых популярных веб-сайтов в мире приложения.

(Источник: http://www.iis.net/overview/choice/aspnetandphpsupport)

Я попытался поместить файл test.php (с conent: <?php phpinfo(); ?>) на существующий веб-сайт ASP.NET(используйте реальный сервер https://somee.com). Я знал, что ASP.NET и PHP работают вместе.

Подробнее:
http://www.w3schools.com/aspnet/webpages_php.asp
https://technet.microsoft.com/en-us/library/hh994592.aspx

Ответ 8

Вы можете запускать оба на одном и том же сайте, но не сможете разговаривать друг с другом, если вы не настроите какую-то систему обмена сообщениями или не поделитесь хранилищем. Они в основном являются приложениями совершенно другого характера.

Другая возможность - вызывать код .NET из PHP:

Кусок кода, написанный на С#, как это:

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:

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

From:

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