Если я хочу распространять приложение PHP с установщиком (пакетная система ОС), как мне поступить? Я не хочу, чтобы файлы PHP были там, просто работающее приложение, поэтому, когда я набираю «приложение» в консоли, оно запускает приложение без необходимости устанавливать PHP в системе (установка php на хосте не требуется). Я также хотел бы, чтобы в приложении был байт-код с возможностью исправления, чтобы он был частями, загружался по мере необходимости, и при обновлении нужно было заменять только часть.
Что бы я сделал сейчас, это следующее:
->Compile PHP with extensions for specific platform.
->Make binary application which launches '/full/php app' when app is launched.
->Pack it in installer in a way, that there would be binary added to path when added, launching specific installation of PHP which is alongside the app with argument of start point->App would be running.
Проблема в следующем:
Может быть, я не хочу, чтобы мои файлы PHP были открыты (в приложении все равно будет доступен исходный код), есть ли готовые вещи для этого? Есть ли способ лучше, чем я предлагал?
Альтернатива: изменение OP Cache для работы с приложением "упаковки" для доставки байтовых кодов в модифицированный OP Cache, который просто читает кеш.
Windows - не единственная целевая платформа.
лол, может интересно? поиск в Google найден - Попробуйте использовать HipHop из Facebook






PHP изначально не делает этого, но вот несколько идей:
Многие архивные программы позволяют создавать самораспаковывающийся архив, а некоторые даже позволяют запускать программу после распаковки. Настройте его так, чтобы он извлекал php.exe и весь ваш код во временную папку, а затем запускал ее оттуда; удаление после завершения сценария.
Есть старый HPHC, который переводит код PHP на C++, и его возраст википедии также содержит ссылки на другие похожие проекты. Возможно, вы сможете воспользоваться ими.
Сам PHP является открытым исходным кодом. Вы должны иметь возможность модифицировать его со слишком большими трудностями, чтобы взять исходный код из другого места, например, какой-то ресурс, скомпилированный непосредственно внутри php.exe.
У вас 3 совпадающих вопроса.
1. Могу ли я создать автономный исполняемый файл из приложения PHP?
Ответ в этом вопрос. TL; DR: да, но это сложно, и многие из инструментов, которые вы можете использовать, наполовину заброшены.
2. Могу ли я упаковать исполняемый файл для распространения на клиентских машинах?
Да, хотя это зависит от того, как вы ответите на вопрос 1. Если вы используете компилятор .Net, ваши параметры будут отличаться от варианта C++.
3. Могу ли я защитить свой исходный код после создания приложения?
Опять же, это зависит от того, как вы ответите на вопрос 1. Многие компиляторы включают опцию «обфускатора», которая затрудняет понимание любой информации, полученной при декомпиляции приложения. Однако решительный злоумышленник, вероятно, сможет пройти через это (поэтому возможно программное пиратство).
Мое предложение - это крошечный инструмент, который я только что закончил, почти для той же проблемы. (О да, я пробовал все остальные, но они старые и ржавые, иногда они застревают с синтаксисом 4.x, не имеют поддержки, не имеют надлежащей документации и т. д.)
Итак, вот RapidEXE:
http://deneskellner.com/sw/rapidexe
В классическом смысле это не действительно настоящий компилятор, а просто прославленный упаковщик, но он делает именно то, что вам нужно: выходной exe будет автономным, неся с собой все и прозрачно создавая специальную среду выполнения. Не волнуйтесь, все происходит очень быстро.
По умолчанию он использует PHP 7.2 / Win64, но также имеет версию 5.x для совместимости с XP. Очевидно, это бесплатное программное обеспечение. (Лицензия MIT.)
(Просто говорю это, потому что я не хочу, чтобы кто-то думал, что я рекламирую или что-то в этом роде. Я просто потратил несколько минут, чтобы прочитать рекомендации по ответам на собственные продукты, и я пытаюсь здесь оставаться в рамках Кодекса джедаев. )
Тем не мение...
I would also like the application to have patch-able byte-code, so it's in parts, loaded when needed and only part needs to be replaced on update.
Проще перекомпилировать exe. Вы, конечно, можете извлечь части полезной нагрузки, но исходный пакет представляет собой один большой zip-архив; похоже, нет никакого реального преимущества обрабатывать его отдельно. Перекомпиляция проекта - это всего лишь одна команда.
Maybe I don't want my PHP files to be exposed(in application, there will be available source anyway)
В этом случае exe содержит ваш сжатый исходный код, но в конечном итоге они будут извлечены во временную папку. Они удаляются сразу после запуска, но это не защита. Обфускация кажется единственным жизнеспособным вариантом.
Если что-то пойдет не так, не стесняйтесь комментировать или напишите мне на developer-at-deneskellner-dot-com. (Я имею в виду, я только что закончил, он совершенно новый, он может плохо себя вести, так что пока считайте это чем-то вроде бета-версии.)
Удачной компиляции!
Спасибо! Это нормально работает? Решает ли это проблему, или просто «приятно иметь, может быть, в другой раз»? :)
Привет! Спасибо за ответ. :) Мне было интересно, могу ли я упаковать PHP-игры в файл .zip и получить копию всей переносимой установки PHP (с ее файлами лицензий) и позволить сценарию оболочки (называемому run.sh) выполнить сценарий PHP?
Абсолютно. Это один из способов сделать это.
Используйте инструмент Zend Guard, который компилирует и преобразует простые текстовые сценарии PHP в платформенно-независимый двоичный формат, известный как файл «Промежуточный код Zend». Затем эти закодированные двоичные файлы можно распространять вместо обычного текстового PHP. Загрузчики Zend Guard доступны для платформы Windows и Linux, что позволяет PHP запускать сценарии, закодированные Zend Guard. Обратитесь к http://www.zend.com/en/products/zend-guard
Никто сегодня не будет платить 600 долларов за запуск PHP5: D
Я хотел бы добавить еще один ответ для тех, кто ищет ответы в Google.
Существует альтернативный метод запуска (и сборки приложений из) исходных кодов .php без использования стандартной среды выполнения php.exe. Решение основано на C# /. NET и фактически способно компилировать исходные файлы php в байт-код .NET.
Это позволяет вам распространять вашу программу, не раскрывая ее исходный код.
Вы можете узнать больше о проекте по адресу: https://www.peachpie.io/
может интересно? Преобразование сценария PHP в автономный исполняемый файл Windows