Я знаю, что PHP скомпилирован в байтовый код до его запуска на сервере, а затем этот байтовый код можно кэшировать, чтобы весь сценарий не нужно переучитывать при каждом доступе к сети.
Но можете ли вы «скомпилировать» php и загрузить двоичный-файл-файл, который будет запускаться только интерпретатором байтового кода?
После того, как этот вопрос был задан, Facebook запустил HipHop для PHP, который, вероятно, является самым проверенным компилятором PHP на сегодняшний день (поскольку он управляет одним из 10 крупнейших веб-сайтов в мире). Однако Facebook прекратил это в пользу HHVM, который является виртуальной машиной, а не компилятором.
Помимо этого, PHP compiler
Google для Google разрабатывает ряд сторонних решений.
кускус
ПМП
Компилятор PHP для Roadsend
bcompiler
bcompiler_write_exe_footer()
) Project Zero
Bambalam
BinaryPHP
Короткий ответ – нет".
Текущая реализация PHP – это интерпретируемый язык. Вы можете аргументировать теоретические аспекты того, что любой язык может быть технически интерпретирован или скомпилирован, но в его нынешнем виде текущие реализации таковы, что PHP-код требует, чтобы интерпретатор запускался, а интерпретатор управляет исполняющей средой.
Чтобы ответить на вопрос о загрузке предварительно скомпилированного байт-кода PHP, возможно, это возможно, но вам придется реализовать способ интерпретации PHP-интерпретатора в таком файле и работать с ним. С уже существующими кэшами опкода это не похоже на задачу, которая принесет много вознаграждения.
Поскольку вопрос был впервые задан, произошел переход на этот ответ от «нет» к «виду»,
http://github.com/facebook/hiphop-php/wiki
Хип-хоп для PHP был компилятором, который взял PHP-код и превратил его в высоко оптимизированный C ++. По-видимому, некоторые функции не поддерживаются (например, «взрывать»)
Я нашел этот вопрос, ища дополнительную информацию о том, как реализовать HipHop, и подумал, что я буду говорить 🙂
С 2013 года Facebook больше не использует его, и он был прекращен в пользу HHVM, который не является компилятором: https://en.wikipedia.org/wiki/HipHop_for_PHP
Есть также
цель которой
- Чтобы кодировать весь скрипт в собственном приложении PHP
- Чтобы закодировать некоторые классы и / или функции в собственном приложении PHP
- Чтобы разрешить создание приложений php-gtk, которые можно было бы использовать на клиентских компьютерах, без необходимости использования php.exe.
- Чтобы выполнить технико-экономическое обоснование для конвертера PHP-C
Расширение доступно в PECL.
phc позволяет вам скомпилировать PHP-программы в разделяемые библиотеки, которые могут быть загружены на сервер. Программа PHP скомпилирована в двоичные файлы. Это делается так, чтобы поддерживать eval
s, include
s и всю стандартную библиотеку PHP.
Если вы просто ищете создание бинарного исполняемого файла из PHP-скрипта, то, пожалуйста, не пытайтесь сделать ваш вопрос предельно точным, потому что он заставит вас казаться, что вы точно знаете, что вам нужно. Кроме того, большинство разработчиков PHP абсолютно не знают, что такое байт-код.
С учетом сказанного ответы – ДА . Я только что закончил компиляцию PHP-скрипта в двоичный файл. И не просто бинарный. Я использовал приложение CDE (ссылка на Wayback Machine, исходная ссылка теперь сломана), чтобы превратить его в переносимый двоичный файл, который может быть распространен со всеми зависимостями и выполнен без каких-либо проблем … и он прекрасно работает.
Все, что вам нужно, это использовать phc .
Кто-нибудь слышал о Зенд Гварде , который делает именно то, что спрашивает этот человек. Он кодирует / обфускает код PHP в «машинный код».
Существует несколько «компиляторов» кода PHP. Большинство из них не поддерживают все функции PHP, поскольку они просто должны интерпретироваться во время выполнения.
Мы используем Phalanger – http://www.php-compiler.net/ – поддерживаем даже эти грязные динамические функции PHP и все еще можем скомпилировать их как сборку .NET, которая может быть распространена как отдельная DLL.
см. 5.5.x с интегрированным модулем OPcache, изменчивым в общей памяти, гораздо большей производительностью и принципом динамизма php остаются нетронутыми.
PHP действительно не компилируется, как со многими программами. Вы можете использовать кодер Zend, чтобы сделать его нечитаемым.
В php 7 есть опция php ini opcache.file_cache, которая сохраняет байтовый код в определенной папке. In может быть полезно в скрипте php cli, который «скомпилирован» и сохраняется в определенной папке для оптимизации повторного использования.
Opcache не компилируется, а что-то похожее.