Преобразование сценария PHP в автономный исполняемый файл Windows


129

Я хочу автоматизировать довольно простую задачу. Для этого я написал небольшой сценарий PHP, который запускаю из командной строки с помощью PHP-CLI. Сейчас я хочу передать этот скрипт кому-нибудь, но не хочу:

  • отдать исходный код
  • попросите его установить PHP в систему

Есть ли способ создать версию PHP скрипта .exe. Я действительно не очень беспокоюсь о декомпиляции; Я больше беспокоюсь о том, чтобы просить людей установить и настроить PHP.


2
вы слышали о bamcompile (r)?
SagarPPanchal

1
Пользуюсь бамбаламом несколько лет. Он застрял почти навсегда - и, что более важно, он совместим только с PHP4.4.4. Однако, если вам не требуется поддержка UTF8 и тому подобное и вы можете иметь дело со сломанным foreach () и некоторыми другими, это должно сработать для вас. Обратите внимание, что с PHP4.4.4 невозможно иметь дело, скажем, с именами файлов UTF8 в каталоге. Также помните, что он создает файлы в% TEMP%, которые никогда не удаляются (php [0-F] {2} .tmp), вам нужно будет их очистить.
Egon_Freeman

Бинарные файлы PHP могут работать переносимо. Вы можете просто сказать людям, чтобы они извлекли всю папку и создали пакетный файл, который выполняет что-то вроде «php.exe -c php.ini script.php».
FluorescentGreen5

Ответы:


195

Peachpie

http://www.peachpie.io

https://github.com/iolevel/peachpie

Peachpie - это компилятор PHP 7, основанный на Roslyn от Microsoft и заимствованный из популярного Phalanger. Он позволяет выполнять PHP в .NET / .NETCore путем компиляции кода PHP в чистый MSIL.

кускус

http://v4.php-compiler.net/

http://wiki.php-compiler.net/Phalanger_Wiki

https://github.com/devsense/phalanger

Phalanger - это проект, который был запущен в Карловом университете в Праге при поддержке Microsoft. Он компилирует исходный код, написанный на языке сценариев PHP, в байт-код CIL (Common Intermediate Language). Он обрабатывает начало процесса компиляции, который завершается компонентом JIT-компилятора .NET Framework. Он не касается генерации собственного кода или оптимизации. Его цель - компилировать сценарии PHP в сборки .NET, логические блоки, содержащие код CIL и метаданные.

Bambalam

https://github.com/xZero707/Bamcompile/

Bambalam PHP EXE Compiler / Embedder - это бесплатный инструмент командной строки для преобразования приложений PHP в автономные приложения Windows .exe. Создаваемые exe-файлы полностью автономны, не требуются библиотеки php и т. Д. Код php кодируется с использованием библиотеки Turck MMCache Encode, поэтому это идеальное решение, если вы хотите распространять свое приложение, одновременно защищая исходный код. Конвертер также подходит для создания файлов .exe для оконных приложений PHP (созданных, например, с использованием библиотеки WinBinder). Это также хорошо для создания автономных серверов / клиентов PHP Socket (с использованием расширения php_sockets.dll). На самом деле это НЕ компилятор в том смысле, что он не производит машинный код из источников PHP, но он работает!

ZZEE PHPExe

http://www.zzee.com/phpexe/

ZZEE PHPExe компилирует PHP, HTML, Javascript, Flash и другие веб-файлы в exes графического интерфейса Windows. Вы можете быстро разрабатывать приложения с графическим пользовательским интерфейсом для Windows, используя знакомую веб-парадигму PHP. Вы можете использовать один и тот же код для онлайн-приложений и приложений Windows с небольшими изменениями или без них. Это коммерческий продукт.

PHC-победа

http://wiki.swiftlytilting.com/Phc-win

Bcompiler расширения PHP используется для компиляции кода сценария PHP в байт-код PHP. Этот байт-код может быть включен так же, как любой файл php, если загружено расширение bcompiler. После создания всех файлов байт-кода модифицированный Embeder используется для упаковки всех файлов проекта в исполняемую программу.

требует

  • php5ts.dll
  • php_win32std.dll
  • php_bcompiler.dll
  • PHP-embed.ini

ExeOutput

http://www.exeoutput.com/

коммерческий

WinBinder

http://winbinder.org/

WinBinder - это расширение с открытым исходным кодом для PHP, языка программирования сценариев. Он позволяет программистам PHP легко создавать собственные приложения для Windows, обеспечивая быстрые и полезные результаты с минимальными усилиями. Даже короткие скрипты с несколькими десятками строк могут создать полезную программу благодаря мощности и гибкости PHP.

PHPDesktop

https://github.com/cztomczak/phpdesktop

PHP Desktop - это проект с открытым исходным кодом, основанный Чареком Томчаком в 2012 году, чтобы предоставить способ разработки собственных настольных приложений с использованием веб-технологий, таких как PHP, HTML5, JavaScript и SQLite. Этот проект - больше, чем просто компилятор PHP в EXE, он включает в себя веб-браузер (встроенный Internet Explorer или Chrome), веб-сервер Mongoose и интерпретатор PHP. Рабочий процесс разработки, к которому вы привыкли, остается прежним, шаг по превращению существующего веб-сайта в настольное приложение в основном заключается в его копировании в каталог «www /». Использование базы данных SQLite необязательно, вы можете встроить базу данных mysql / postgresql в установщик приложения.

PHP Nightrain

https://github.com/kjellberg/nightrain

Используя PHP Nightrain, вы сможете развертывать и запускать веб-приложения HTML, CSS, JavaScript и PHP как собственные настольные приложения в операционных системах Windows, Mac и Linux. Популярные PHP-фреймворки (например, CakePHP, Laravel, Drupal и т.д.) хорошо поддерживаются!

phc-win "вилка"

https://github.com/RDashINC/phc-win

Более или менее разветвленная версия phc-win, она использует те же методы, что и phc-win, но поддерживает почти все современные версии PHP. (5.3, 5.4, 5.5, 5.6 и т.д.) Он также может использовать Enigma VB для объединения php5ts.dll с вашим exe, а также для сжатия UPX. Наконец, он имеет win32std и winbinder, статически скомпилированные в PHP.

РЕДАКТИРОВАТЬ

Другой вариант - использовать

http://www.appcelerator.com/products/titanium-cross-platform-application-development/

онлайн-компилятор, который может создавать исполняемые файлы для ряда различных платформ, на разных языках, включая PHP

TideSDK

http://www.tidesdk.org/

TideSDK - это фактически переименованный проект Titanium Desktop. Titanium по-прежнему ориентирован на мобильные устройства и отказался от настольной версии, которую переняли некоторые люди, которые открыли исходный код и назвали ее TideSDK.

Как правило, TideSDK использует HTML, CSS и JS для рендеринга приложений, но поддерживает языки сценариев, такие как PHP, в качестве подключаемого модуля, а также другие языки сценариев, такие как Python и Ruby.


Я могу подтвердить, что phc-win работает для создания консольного exe-файла с кодом PHP 5.3. Просто поместите PHP-скрипт в ту же папку, что и php-win exe.
Dejv

Я использовал компилятор бамбалам. Это довольно круто и просто, а также поддерживает win-builder, но не поддерживает php5 :(
m3nda

PHP-Nightrain - очень хорошая альтернатива PHPDesktop, кроссплатформенность (Windows, OSX, Linux). Хотя он имел плохую репутацию из-за зависимости от Java, теперь он переключился на Python в качестве оболочки и является очень хорошим выбором для разработки кроссплатформенного программного обеспечения на основе PHP. - github.com/naetech/nightrain
Таапо,

1
Только что проиграл все воскресенье из-за проблемы с Бамбаламом. В этой установке он выполняется 50 раз в день. Он создает временные файлы с фиксированным размером имени, которые он никогда не удаляет (4 символа) ... в результате больше не будет свободных имен файлов. Sysinternals procmon помог выяснить, что произошло. Это было непросто и оставило плохую атмосферу на Бамбаламе.
Жуан,

1
молодцы! Я попробую некоторые из них. Что лучше всего для использования базы данных mysql с сайтом php?
garatu

12

У меня были проблемы с большинством инструментов в других ответах, поскольку все они очень устарели.

Если вам нужно решение, которое будет «просто работать», упакуйте голую версию php с вашим проектом в архив WinRar SFX, настройте его на извлечение всего во временный каталог и выполните php your_script.php.

Для запуска базового сценария требуются только файлы php.exeи php5.dll(или в php5ts.dllзависимости от версии).

Чтобы добавить расширения, упакуйте их вместе с файлом php.ini:

[PHP]
extension_dir = "."
extension=php_curl.dll
extension=php_xxxx.dll
...

привет ваше решение очень интересно. Аналогичен веб-серверу quickphp. У вас есть простой пример? Я надеюсь, что вы могли бы предоставить источник. Кстати, хорошая идея.
Эданг Джорли

Это действительно интересно! Но дело в том, что OP не хочет «выдавать исходный код», и даже новичок может просто извлечь сценарий из SFX.
Джей Дадхания,

8

Я попробовал большую часть решения, приведенного в 1-м ответе, единственное, что сработало для меня и не является коммерческим, - это php-desktop .

Я просто поместил свои файлы php в www/папку, изменил имя .exeи смог запустить свой php как exe !!

Также есть полная документация, актуальная поддержка, совместимость с Windows и Linux, а параметры можно легко изменить.


2
PHP Desktop теперь поддерживает Linux, см. Его первоначальный выпуск: github.com/cztomczak/phpdesktop/releases/tag/linux-v72.0
Czarek Tomczak

6

RapidEXE как раз для этой работы:

Он преобразует проект php в автономный exe. Мне надоели все остальные компиляторы, я пробовал их один за другим, и все они так или иначе меня разочаровали. Будь моим гостем, отзывы всегда приветствуются!

Примечание: механизм, лежащий в основе этого, очень похож на подход WinRAR SFX; извлечь двигатель, извлечь исходный код и запустить. Просто с ним быстрее и проще работать. Компиляция одной командой, сжатие, интеллектуальная распаковка, автоматическая очистка, простая конфигурация, полный контроль над движком и версией php; также расширяемый с минимальными усилиями.

Удачного развития!


Я пробовал использовать ваш инструмент, но получаю следующую ошибкуCannot find myself (D:\Desktop\phpflexer\phpflexer.exe)
Ghola

Это многообещающе, но не могли бы вы добавить к этому несколько библиотек? Например, мне нужен GD2, чтобы мои скрипты могли работать с изображениями.
Том

@Tom: конечно, есть новая версия, и если вы захотите ее протестировать, я могу дать вам ссылку для скачивания. (Обещаю, что никаких вредоносных программ.) На самом деле сейчас он намного лучше и это php 7.2, плюс, я думаю, он сможет работать с другими языками. Моя почта - kellnerdenes.
dkellner

1
Просто попробовал, довольно изящное решение для скомпилированных скриптов командной строки! Я уже довольно давно использую ExeOutput4PHP для большинства своих проектов с графическим интерфейсом, но для консольных приложений RapidEXE также выглядит великолепно, если не лучше.
Джей Дадхания

1
@JayDadhania Музыка для моих ушей! Версия 3 скоро появится, следите за обновлениями!
dkellner

2

ExeOutput также может превратить веб-сайты PHP в приложения и программное обеспечение Windows.

Превратите сайты PHP в приложения и программное обеспечение для Windows

Приложения, созданные с помощью ExeOutput для PHP, запускают сценарии PHP, приложения PHP и веб-сайты PHP изначально и не требуют веб-сервера, веб-браузера или дистрибутива PHP. Они автономны и работают на любом компьютере с последними версиями Windows.

ExeOutput для PHP - это мощный компилятор веб-сайтов, который работает со всеми элементами современных сайтов: сценариями PHP, JavaScript, HTML, CSS, XML, файлами PDF, Flash, видеороликами Flash, видеороликами Silverlight, базами данных и изображениями. Комбинируя эти элементы с PHP Runtime и PHP Extensions, ExeOutput для PHP создает EXE-файл, содержащий ваше полное приложение.

http://www.exeoutput.com/


1

Мой опыт в этом вопросе подсказывает мне, что большинство этих программ хорошо работают с небольшими проектами.
А как насчет больших проектов? например: Zend Framework 2 и тому подобное.
Некоторым из них требуется браузер для запуска, и это сложно сказать клиенту «введите пожалуйста http://localhost/» в адресную строку браузера !!

Для этого я создаю простой проект: PHPPy

Это не полный способ создания автономного исполняемого файла для запуска проектов php, но он поможет вам в этом.
Мне не удалось скомпилировать файл python с помощью PyInstaller или Py2exe в файл .exe, надеюсь, вы сможете.
Вам не нужны исполняемые файлы uniformserver.


4
Создать ярлык для localhost, это тяжелая работа, не так ли? :) В любом случае у вас есть основания на то, что "хорошо работает на небольших проектах". Единственное, что вам нужно - это phpdesktop.
m3nda

1

Текущий PHP Nightrain (4.0.0) написан на Python и использует библиотеки wxPython. Пока wxPython работает хорошо, чтобы вывести PHP Nightrain на тот уровень, который есть сегодня, но для того, чтобы вывести PHP Nightrain на новый уровень, мы представляем родного брата PHP Nightrain, PHPWebkit!

Это обновление PHP Nightrain.

https://github.com/entrypass/nightrain-ep

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.