Перетворіть скрипт PHP в автономний виконуваний Windows


128

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

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

Чи є спосіб створити .exe версію сценарію PHP. Я насправді не дуже переживаю за декомпіляцію; Мене більше турбує прохання людей встановити та налаштувати PHP.


2
ви чули про bamcompile (r)?
SagarPPanchal

1
Вживають Бамбалам вже кілька років. Він затримався майже назавжди зараз - і ще більше, він сумісний лише з PHP4.4.4. Однак, поки вам не потрібна підтримка UTF8 і подібне, і ви можете мати справу зі зламаним foreach () та деякими іншими, це повинно працювати для вас. Зверніть увагу, що неможливо мати справу, скажімо, з іменами UTF8 у каталозі з PHP4.4.4. Також пам’ятайте, що він створює файли в% TEMP%, які ніколи не видаляються (php [0-F] {2} .tmp), вам потрібно буде їх очистити.
Egon_Freeman

Бінарні файли PHP можуть працювати портативно. Ви можете просто сказати людям витягти всю папку та створити пакетний файл, який виконує щось на кшталт "php.exe -c php.ini script.php".
FluorescentGreen5

Відповіді:


195

Персиковий

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 та метадані.

Бамбалам

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

Bambalam PHP EXE Compiler / Embedder - це безкоштовний інструмент командного рядка для перетворення програм PHP в автономні програми Windows .exe. Вироблені файли EXE повністю автономні, немає необхідності в php dlls тощо. 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 та інші веб-файли у файли exe Windows GUI. Ви можете швидко розробити програми GUI для Windows, використовуючи звичну веб-парадигму PHP. Ви можете використовувати один і той же код для онлайн-програм і програм Windows з незначними або відсутніми модифікаціями. Це комерційний продукт.

phc-win

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

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

Вимагає

  • 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 - це проект з відкритим кодом, заснований Czarek Tomczak у 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.

EDIT

Інший варіант - використовувати

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

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

TideSDK

http://www.tidesdk.org/

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

Як правило, TideSDK використовує HTML, CSS та JS для візуалізації додатків, але він підтримує скриптизовані мови, такі як PHP, як модуль плагінів, а також інші мови сценаріїв, такі як Python та Ruby.


Я можу підтвердити, що phc-win працює для створення файлу консолі EXE з кодом PHP 5.3. Просто майте сценарій PHP у тій самій папці, що і php-win exe.
Devv

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

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

1
Щойно втратив увесь неділю з проблемою / поводженням Бамбалам. У цій установці він виконується приблизно 50 разів на день. Він створює тимчасові файли з фіксованим розміром імені, який він ніколи не видаляє (4 символи) ... в результаті немає більше вільних імен файлів. Проголошені сисинтернали допомогли з’ясувати, що сталося. Це було непросто і залишає погану атмосферу на Бамбалам.
Жоао

1
чудова робота чоловіків! Я спробую деякі з них. Яка найкраща для використання база даних mysql з веб-сайтом php?
Гарату

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
...

привіт ваше рішення дуже цікаве. Схожий на швидкий веб-сервер. У вас є простий приклад для цього? Я сподіваюся, що ви могли б надати джерело. Приємна ідея до речі.
Еданг Джерлі

Це справді цікаво! Але річ у тому, що OP не хоче "віддавати вихідний код", і навіть новачок може просто витягнути сценарій з SFX.
Джей Даданія

8

Я спробував більшість рішень, наведених у першій відповіді, єдине, що працювало на мене і є некомерційним - це 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, плюс я думаю, він зможе обробляти інші мови. Моя gmail - це kellnerdenes.
dkellner

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

1
@JayDadhania Музика на мої вуха! Версія 3 скоро, будьте в курсі!
dkellner

2

ExeOutput також може перетворити веб-сайти PHP у додатки та програмне забезпечення Windows

Перетворіть веб-сайти PHP у додатки та програмне забезпечення Windows

Програми, зроблені за допомогою ExeOutput для PHP, запускають сценарії PHP, PHP-програми та веб-сайти PHP споконвічно і не потребують веб-сервера, веб-браузера або розповсюдження PHP. Вони є автономними і працюють на будь-якому комп’ютері з останніми версіями Windows.

ExeOutput for PHP - це потужний компілятор веб-сайтів, який працює з усіма елементами, знайденими на сучасних сайтах: PHP-скрипти, JavaScript, HTML, CSS, XML, PDF-файли, Flash, Flash-відео, відео Silverlight, бази даних та зображення. Поєднуючи ці елементи з PHP Runtime та PHP Extensions, ExeOutput for PHP створює файл EXE, який містить вашу повну програму.

http://www.exeoutput.com/


1

Мій досвід у цій справі підказує, що більшість із цих програм добре працюють із невеликими проектами.
А як щодо великих проектів? наприклад: Zend Framework 2 та деякі подібні речі.
Деяким з них потрібен браузер для запуску, і це важко сказати клієнту "будь ласка введіть http://localhost/" у адресному рядку вашого браузера !!

Для цього я створюю простий проект: PHPPy

Це не повний спосіб створити окремий виконуваний файл для запуску PHP-проектів, але допомагає вам це зробити.
Не вдалося скомпілювати файл python з файлом PyInstaller або Py2exe в .exe, сподіваюся, що ви зможете.
Вам не потрібні виконувані файли уніфікованого сервера.


4
Створити ярлик до localhost - це важка робота, чи не так? :) У будь-якому випадку у вас є підстави "добре працює на невеликих проектах". Унікальний повний "як хочеш" - це phpdesktop.
м3нда

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.