Я просмотрел довольно много учебников по использованию Java от PHP, но они, похоже, конфликтуют с eachother. Многие из них говорят об изменении php.ini для использования DLL-файла, но, судя по всему, в PHP 5 есть встроенные возможности. Но это требует Tomcat? Должен ли я избавиться от Apache, чтобы запустить это? http://php-java-bridge.sourceforge.net/pjb/installation.php говорит, что он помещает файл .war в каталог autodeploy Tomcat, но я не вижу ни одного каталога с именем «autodeploy». Кто-нибудь объяснит шаг за шагом, как заставить Java-материал работать на машине Windows (я использую Windows 7) с PHP 5 и Apache?
Вероятно, вы найдете массу бесполезной и устаревшей информации о том, как использовать Java-классы из вашего веб-приложения PHP, что совсем не помогает. Примерно год назад у меня возникла аналогичная проблема, и я узнал, что единственный способ, который достаточно зрелый для использования в производстве, – это PHP / Java Bridge – тот, который вы нашли в Sourceforge. Он работает лучше, чем можно было ожидать, и не требует знания Java (однако, если вы знаете Java, вам следует подумать о написании веб-сервиса для этой цели и использовать его на стороне PHP).
Документация Bridge не очень очевидна, однако помните, что вы должны придерживаться ее и не читать другие ресурсы, описывающие разные методы – не смешивайте вещи, то есть вам не нужно устанавливать какие-либо расширения PHP или smth – все они связаны с другими (обычно устаревшими и неподдерживаемыми) способами вызова Java из PHP.
PHP / Java Bridge – это сетевой протокол, поэтому единственное, что вам нужно на вашей стороне PHP, – это обеспечить, чтобы «allow_url_include» включен в вашем php.ini
Со стороны Java вам нужно заставить PHP / Java Bridge привязаться к свободному порту и слушать соединения. Тогда ваше PHP-приложение сможет выполнить «require_once» прокси-файла Bridge, который будет доступен на этом порту. Вот и все, и вы можете создавать и вызывать классы Java прозрачно из своего PHP-скрипта с использованием этого объекта-прокси-моста (он будет сериализовывать и передавать вызовы и результаты за кулисами).
Есть два варианта, как получить мост и привязать его к локальному порту.
1) сложный: установите Tomcat, создайте файл войны с самим мостом и библиотекой, которую вы хотите использовать. Этот способ описан здесь:
http://php-java-bridge.sourceforge.net/pjb/webapp.php
Чтобы развернуть войну в вашей установке Tomcat, просто поместите войну в папку Webapp Tomcat и перезапустите ее.
2) проще: упакуйте банку вместо войны и запустите ее (она будет использовать встроенный веб-сервер, поэтому вам не придется устанавливать Tomcat и развертывать что-нибудь). Чтобы перейти сюда, обратитесь к этой странице:
http://php-java-bridge.sourceforge.net/pjb/desktop-apps.php
Оба способа будут работать для вас (не смотрите на слово «рабочий стол» во втором варианте, таким образом, он отлично работает с вашим PHP-сервером).
Обратитесь к примерам о том, как использовать его в разделе «Примеры» (obvously). Также вы можете обратиться к моему маленькому PHP-клиенту, который говорит о встроенной базе данных Neo4J в Java, используя PHP / Java Bridge. Однако этот пример может быть более сложным и предназначен для развертывания в Tomcat, так или иначе вы можете иметь представление о том, как создавать экземпляры и использовать классы из него:
Вы можете просто вызвать простое Java-приложение из PHP путем разметки процесса и передачи информации по stdin / stdout. В качестве альтернативы, если вы интегрируете Sphinx в webapp, вы можете интегрировать его посредством HTTP-вызовов.
Quercus :
Quercus – это быстрая, открытая исходная, 100% -ая реализация Java языка PHP. Quercus – это особенность сервера приложений Resyn Application of Caucho Technology и встроена в Resin – дополнительной загрузки / установки нет. Разработчики, использующие Resin, могут запускать проекты PHP, не устанавливая стандартный интерпретатор PHP ( http://www.php.net ), поскольку Quercus берет на себя роль механизма PHP.