Как стать автором
Обновить

Компилируем быстрые консольные .exe приложения на PHP 8.1 в 2023 году, а почему бы и нет?

Уровень сложности Средний
Время на прочтение 3 мин
Количество просмотров 4.1K
Блог компании Timeweb Cloud PHP *C++ *Разработка под Windows *
Туториал
Всего голосов 35: ↑31 и ↓4 +27
Комментарии 11

Комментарии 11

Скажите, а можно узнать у автора, нет ли англоязычной версии?

Будет, напишу через несколько дней

Немного странный вывод. Консольные приложения на php пишут давно и достаточно массово, просто их не упаковывают в исполняемый файл, а используют установленный в системе интерпретатор

Спасибо, уточнил

Hello World с размером в 7 метров нам не подходит, согласитесь.

на этой фразе засмеялись писатели полугигабайтных "десктопных приложений" на электроне

А почему бы просто не собрать пых с embed-like SAPI? Там даже ридмишка красивая есть с описанием: https://github.com/php/php-src/tree/master/sapi/embed


На вход ему можно выдать, например phar и получится в результате 3 файла: php8.dll, php.exe и app.phar.


Тыкаешь на php.exe, а оно просто дёргает мэин из phar и запускается, всё. И без всяких энигм и прочих костылей =)))

Весьма, даже с .bat файлом можно, но пока, как по мне, нужно найти способ спрять все эти файлы в один исполняемый файл (ненадобно пользователю видеть библиотеки) и вернуть ответ вызова.

Даже в sfx архив можно, проблема в том, что sfx выполняет команды и не дожидается их ответа, программы открываются в новом командном окне, а это выглядит не очень.

Ну так изначально там просто внутрь main() подставляется php код как есть. Phar просто как пример, чтоб не пересобирать всё каждый раз.

Поэкспериментируем

Компилил PHP 4.4.4 с помощью bcompiller . С добавлением UPX получалось 650кб (все файлы остались, могу зашарить). Но там и php.dll весил немного. Зато и FFI есть и окошки из коробки за счёт WinBinder.

Был ещё в те времена какой-то phpack, но профита с него не помню. Возможно, из него можно вытащить уменьшенные dll-ки пыхи пятой (типа такого: https://github.com/alecgorge/phpack/tree/master/stubs/tiny)

Увы, во времена php7 уже на другие извращенства перелез

Да, помню.

Был ещё phc-win, exeoutput, rapidEXE (файл получался на 5мб), PHP 5-ой версии весил мало. Но все они навешаны на собственные наработки, а здесь стандартный вывод с любой версией PHP.
А что за извращенства на PHP 7 у вас?)

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