Если я хотел бы распространять PHP-приложение с установщиком (пакетная система ОС), как мне поступить? Я не хочу, чтобы там были PHP-файлы, просто работающее приложение, поэтому, когда я набираю «app» в консоли, это приводит к запуску приложения, без необходимости устанавливать 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, который просто читает кэш.
PHP не делает этого изначально, но вот несколько идей:
Многие архивные программы позволяют создавать самораспаковывающийся архив, а некоторые даже позволяют запускать программу после распаковки. Настройте его так, чтобы он извлекал php.exe и весь ваш код во временную папку, а затем запускал ir оттуда; удаление после завершения сценария.
Там старый 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.)
(Просто говорю это, потому что я не хочу, чтобы кто-то думал, что я рекламирую или что-то в этом роде. Я просто потратил несколько минут, чтобы прочитать рекомендации по ответам на собственный продукт, и я пытаюсь придерживаться Кодекса джедаев здесь. )
Тем не мение…
Мне также хотелось бы, чтобы в приложении был байт-код с возможностью исправления, поэтому он по частям загружается при необходимости, и при обновлении необходимо заменить только часть.
Проще перекомпилировать exe. Конечно, вы можете извлечь части полезной нагрузки, но пакет с исходным кодом — один большой почтовый индекс; кажется, нет никакого реального преимущества обрабатывать его отдельно. Перекомпиляция проекта — это всего лишь одна команда.
Может быть, я не хочу, чтобы мои PHP-файлы были доступны (в любом случае в приложении будет доступен исходный код)
В этом случае исполняемый файл содержит ваш сжатый исходный код, но в итоге они извлекаются во временную папку. Они удаляются сразу после запуска, но, ну, это вообще не защита. Запутывание, кажется, единственный жизнеспособный вариант.
Если что-то пойдет не так, не стесняйтесь комментировать или напишите мне на developer-at-deneskellner-dot-com. (Я имею в виду, я только что закончил, он совершенно новый, он может плохо себя вести, поэтому пока посчитайте это чем-то вроде беты.)
Удачной компиляции!
Используйте инструмент Zend Guard, который компилирует и преобразует обычные текстовые PHP-скрипты в независимый от платформы двоичный формат, известный как файл «Zend Intermediate Code». Эти закодированные двоичные файлы могут затем распространяться вместо простого текста PHP. Загрузчики Zend Guard доступны для платформ Windows и Linux, что позволяет PHP запускать скрипты, закодированные Zend Guard.
Ссылаться на http://www.zend.com/en/products/zend-guard