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

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

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

Ответы [ 8 ]

22 голосов
/ 21 января 2011

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

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

9 голосов
/ 21 января 2011

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

3 голосов
/ 18 февраля 2016

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

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

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

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

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

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

1 голос
/ 25 марта 2012

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

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

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

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

0 голосов
/ 27 октября 2015

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

Другая возможность - вызвать ваш код .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

0 голосов
/ 03 мая 2015

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

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

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

Я попытался поместить файл test.php (с содержанием: <?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

0 голосов
/ 21 января 2011

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

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

Вы также можете обнаружить некоторую несовместимость с cookie и сеансами Их тоже можно пройти, но не легко.

0 голосов
/ 21 января 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...