Можно ли преобразовать файл PHP в двоичный файл и развернуть его на веб-сервере?
Поскольку PHP является (относительно) переносимым языком, более предпочтительным является компиляция источника PHP для байт-кода вместо двоичного кода. Для этого существует экспериментальный проект под названием bcompiler .
Несколько месяцев назад я искал его (защита php-кода или защита скриптов), и мои результаты были следующими:
Я предоставляю некоторые описания, но попробую Google и прошу прощения.
Будьте осторожны с вашим поиском, потому что вместо этого вы можете столкнуться с компрессорами php, а компрессоры – только GZIP
и другие механизмы сжатия передачи HTTP.
Наиболее важными проблемами с инструментами защиты php-скриптов являются:
Сколько будет работать скорость работы в режиме php (вниз) (насколько быстро скорость)
Нужна ли нам дополнительная среда или установленные инструменты на сервере php?
Простое управление
Вы найдете описание и сравнение по всему миру: http://www.seocompany.ca/software/free-encryption-software.html
обфускаторы
Много обфускаторов вы найдете в Интернете, но нет никаких гарантий, что ваши коды будут работать.
Даже я нашел смешанный путь с Visual C++
и MSVS
для обфускации php, а также потому, что у меня тоже есть опыт работы с asp.net
Я тестировал его, но не работал.
Преобразователи и блокираторы
ионный протектор ( http://www.ioncube.com/ ): О, не свободен, но я много слышал о его знаменитом имени
phc (php-компилятор) : бесплатный и был хорошим примером, но «Брендан Лонг» сказал правду, потому что phc имеет болезненный способ установки. Однако результатом является волшебство и имеет известное имя, такое как ион
php locker : Я получил его и протестировал. У него была ошибка с скомпилированным кодом, и он был выпущен ниже php5. Абсолютно не бесплатно и для тех, кто думает о ccr-ac * ks, найти его для php-locker невозможно.
Zend Guard : идеальный способ защиты, но это сложнее, чем phc или ion, потому что на вашем сервере требуется среда выполнения Zend (ZRE), а Zend Guard абсолютно несвободен, но если вы парень Zend (zend framework + zend IDE + zend Guard), вы должны знать, что Zend Guard совместим с zend IDE, и процесс блокировки кода будет таким простым. Я не парень из Zend, потому что любой из zend-фреймворков и zend-охранников, очевидно, снижают скорость выполнения. Мне нравится ускоренное время выполнения php.
php -> C/C++ compiling
(ДА ЭТО ВОЗМОЖНО) (ЛУЧШИЕ ПРОИЗВОДИТЕЛЬНОСТИ ЧЕРЕЗ МИР): Это не так знаменито, так что это нормально, если об этом никто не говорил.
facebook hiphop : этот инструмент использует facebook для компиляции php-файлов на c ++ / c для получения лучшей производительности, но, наконец, у нас есть нечитаемые скомпилированные коды. Я не помню, но я думаю, что ему нужно хорошее знакомство с linux или механизмом перекомпиляции php на Microsoft Visual C++
. (Однако НЕ ДОПУСКАЙТЕСЬ к моей слабой памяти и google) (И ДЛЯ ОБУЧЕНИЯ О РЕКОМЕНДУЕМЫХ ПУТЯХ PLZ REFER PLAY ДЛЯ последней версии php_manual.chm)
Наконец, я сделал свой собственный простой php obfuscator, используя регулярные выражения, которые работали на php 5.3 и мои сложные скрипты, поэтому я перешел на OpenSSL
и различные механизмы шифрования и получил обзор по обеспечению безопасности php.
Желаем вам успеха.
Это просрочка, но вы должны делать то, что хотите.
Создайте собственное пользовательское расширение с помощью движка zend, когда они скомпилируются в dll c ++. Добавьте эту DLL в свое расположение ext в каталоге php. После этого вы можете называть свои собственные php-скрипты функциями php. Имейте в виду, что php является серверной, поэтому никто не может получить ваши скрипты, если они не скопированы с сервера и не раздаются.
Загрузите исходную библиотеку php для версии, которая у вас есть. [windows.php.net] В комплект включены материалы Zend, которые вам нужны.
Шаг 1. Создайте новый проект и выберите «Общий» в Visual C ++ и пустую опцию проекта. Дайте ему имя и нажмите «ОК». Mine – Project1, поэтому я буду использовать это.
Шаг 2. Щелкните правой кнопкой мыши имя решения и выберите свойства. Выберите Dynamic Library (.dll) в разделе «По умолчанию» / «Тип конфигурации» в разделе «Свойства конфигурации / Общие». Убедитесь, что вы изменяете конфигурацию Debug, поскольку Release не используется.
Шаг 3. В разделе VC ++ Directiories добавьте следующее в библиотеки Include: C: \ php-7.1.8-src \ Zend C: \ php-7.1.8-src \ win32 C: \ php-7.1.8-src \ TSRM C: \ php-7.1.8-src \ main C: \ php-7.1.8-src Библиотеки: C: \ php-7.1.8 \ dev
Шаг 4. В препроцессоре C / C ++ добавьте ZEND_DEBUG = 0; ZTS = 1; ZEND_WIN32; PHP_WIN32 – в определения препроцессора
Шаг 5. В разделе «Ввод ссылок» добавьте php7ts.lib. Это должно соответствовать lib для вашей версии php
Нажмите «ОК», чтобы сохранить настройки «Свойства» для вашего решения.
Теперь добавим файл кода для вашей функции (Project1)
В папке с исходными файлами щелкните правой кнопкой мыши и добавьте код. Я назвал мой Project1.cpp и вот источник. Вам нужно будет переименовать config.w32.h.in в config.w32.h и скопировать его в директории, где это необходимо. Intellisense должен сказать вам, где он выглядит, и config.w32.h.in находится в каталоге C: \ php-7.1.8-src \ win32.
// this needs to match the compiler version that php was compiled with #define _CRT_SECURE_NO_WARNINGS #define PHP_COMPILER_ID "VC14" #pragma once /* You must include config.w32.h first */ #include "win32/config.w32.h" #include "php.h" ZEND_FUNCTION(ReturnString); zend_function_entry Project1_functions[] = { ZEND_FE(ReturnString, NULL) { NULL, NULL, NULL } }; zend_module_entry Project1_module_entry = { STANDARD_MODULE_HEADER, "Project1 Module", Project1_functions, NULL, NULL, NULL, NULL, NULL, NO_VERSION_YET, STANDARD_MODULE_PROPERTIES }; ZEND_GET_MODULE(Project1) ZEND_FUNCTION(ReturnString) { zval* value; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &value) == FAILURE) { RETURN_FALSE; } convert_to_string(value); RETURN_STRING(Z_STRVAL_P(value), true); }
Нажмите F7 для компиляции, и он должен создать Project1 \ Debug \ Project1.dll. Скопируйте Project1 в каталог ext C: \ php-7.1.8 \ ext и добавьте расширение = Project1.dll в ваш php.ini, и вам должно быть хорошо идти. Если он не работает, дважды проверьте свои свойства, чтобы убедиться, что вы ничего не пропустили.
The script is quite simple: <?php echo ReturnString("The Returning String"); ?>
Если веб-сервер основан на Linux, вы можете создать такой пакет, как .deb или .rpm (в зависимости от дистрибутива Linux) и легко распространять / развертывать его.
БР, Давид.
Это зависит от того, что вы подразумеваете под «двоичным».
Если вы хотите скомпилировать (или просто обфускать) свой PHP-код, чтобы кто-то еще не изменял, используйте компилятор байт-кода. Одним из примеров являются инструменты Zend и другие. (Я предпочитаю инструменты Zend, потому что они являются основной компанией позади PHP и полностью QA все свои инструменты против всех версий PHP).
Если вы хотите скомпилировать свой PHP-код и связать с ним рабочую среду PHP, а затем развернуть его (например, C \ C ++), тогда нет. Возможно, в теории это было бы возможно, но это было бы беспорядок. (Не практично или практически невозможно, и не думайте, что кто-то поставил что-нибудь вместе, чтобы попытаться, и выход также будет привязан к определенной архитектуре).