Могут ли 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?

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

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

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

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

Если у вас есть 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/ *

Да, 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.

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

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

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

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

Поддержка 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

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

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

Часть кода, написанная на C #, выглядит следующим образом:

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

Из:

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