2011-07-16 1 views
1

поэтому я планирую иметь PHP сайт будучи в состоянии выполнить Java приложение с помощью Exec() ....хранения Java исполняемый файл, который можно вызвать с помощью PHP

мой вопрос, где я должен хранить фактическое jar для java-приложения, следует ли помещать их в одну из папок на www-сервере Apache или я должен помещать их во внешнюю папку, недоступную apache.

Это даже важно? Я обеспокоен последствиями безопасности этих выборов ....

ответ

0

Когда вы используете Java, используя exec из php, вы запускаете его от имени пользователя Apache. Поэтому IMHO этот каталог может быть доступен для Apache. Однако (как указано собакой в ​​комментарии), это не должно быть в Apache DocumentRoot или файл .jar не должен быть доступен HTTP.

Лучшая архитектура IMHO может содержать другой сервер Java (легкий Jetty или Tomcat), предоставляющий веб-сервис (restfull или soap). Ваш сайт должен вызывать эту веб-службу на сервере Java. Другой способ - разместить диспетчер очереди между ними (или просто создать очередь в базе данных). Есть много лучших решений.

+1

Однако он не должен быть в Apache DocumentRoot или файл .jar не должен быть доступен HTTP. – dog

2

Звучит довольно болезненно ... вы будете стрелять по JVM для каждого попадания на страницу. Даже не учитывая проблемы безопасности, рассмотрите загрузку, которую она будет загружать в вашу систему.

Возможно, вам лучше использовать надлежащий сервер Java, такой как Tomcat.

Насколько можно выразиться, это в основном не имеет значения. Функции exec() PHP работают на уровне файловой системы и не могут заботиться о вашем корневом каталоге http и многом другом. Пока у вас есть права и пути, установленные правильно, он может быть где угодно на вашем компьютере.

Смежные вопросы