Можно ли преобразовать файл PHP в двоичный файл и развернуть его на веб-сервере?
Преобразование PHP файла в двоичный
Ответ 1
Поскольку PHP является (относительно) переносимым языком, более предпочтительным является компиляция PHP-источника для байт-кода вместо двоичного кода. Для этого существует экспериментальный проект под названием bcompiler.
Ответ 2
Несколько месяцев назад я искал его (защита php-кода или защита script), и мои результаты были:
Я предоставляю некоторое описание, но попробую Google и прошу прощения.
Будьте осторожны с поиском, потому что вместо этого вы можете столкнуться с компрессорами php, а компрессоры - всего GZIP
и другие механизмы сжатия передачи http.
Наиболее важными проблемами с защитными средствами php script являются:
-
Сколько будет работать скорость работы в режиме 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, невозможно.
-
Zend Guard: отличный способ защитить, но это сложнее, чем phc или ion, потому что вам нужна среда исполнения Zend (ZRE) на вашем сервере, а Zend Guard абсолютно несвободен, однако, если вы - Zend guy (zend framework + zend IDE + zend Guard), вы должны знать, что Zend Guard совместим с zend IDE, и процесс блокировки кода будет таким простым. Я не парень из Zend, потому что любой из zend-фреймворков и zend-охранников, очевидно, снижают скорость выполнения. Мне нравится ускоренное время выполнения php.
-
php -> C/C++ compiling
(ДА ЭТО ВОЗМОЖНО) (ЛУЧШИЕ ПРОИЗВОДИТЕЛЬНОСТИ ЧЕРЕЗ МИР): Это не так знаменито, так что это нормально, если об этом никто не говорил. -
facebook hiphop. Этот инструмент использует facebook для компиляции php файлов на С++/c для получения лучшей производительности, но, наконец, у нас есть нечитаемые скомпилированные коды. Я не помню, но я думаю, что он нуждается в хорошем знакомстве с linux или механизмом перекомпиляции php на
Microsoft Visual C++
. (Однако НЕ ДОПУСКАЙТЕСЬ к моей слабой памяти и google) (И ДЛЯ ОБУЧЕНИЯ О РЕКОМЕНДОВАННОМ ПУТЕ PHP PLZ REFER К последней версии php_manual.chm)
Наконец, я сделал свой собственный простой php obfuscator, используя регулярные выражения, которые работали на php 5.3 и мои сложные скрипты, поэтому я перешел на OpenSSL
и различные механизмы шифрования и получил обзор по безопасности php.
Желаем вам успеха.
Ответ 3
Это просрочка, но она должна делать то, что вы хотите.
Создайте собственное пользовательское расширение с помощью движка zend при компиляции в dll С++. Добавьте эту DLL в свое расположение ext в каталоге php. После этого вы можете называть свои собственные php-скрипты функциями php. Имейте в виду, что php является серверной, поэтому никто не может получить ваши скрипты, если они не скопированы с сервера и не раздаются.
Загрузите исходную библиотеку php для версии, которая у вас есть. [windows.php.net] В комплект включены материалы zend.
Шаг 1. Создайте новый проект и выберите "Общие" в Visual С++ и пустую опцию проекта. Дайте ему имя и нажмите "ОК". Mine - Project1, поэтому я буду использовать это.
Шаг 2. Щелкните правой кнопкой мыши имя решения и выберите свойства. Выберите Dynamic Library (.dll) в разделе "По умолчанию" / "Тип конфигурации" в разделе "Свойства конфигурации/Общие". Убедитесь, что вы изменяете конфигурацию Debug, поскольку Release не используется.
Шаг 3. В разделе VС++ 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\главная C:\PHP-7.1.8-Src Библиотеки: C:\PHP-7.1.8\DEV
Шаг 4. В препроцессоре 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");
?>
Ответ 4
Это зависит от того, что вы подразумеваете под "двоичным".
Если вы хотите скомпилировать (или просто обфускать) свой PHP-код, чтобы кто-то еще не изменял, используйте компилятор байт-кода. Одним из примеров являются инструменты из Zend и другие. (Я предпочитаю инструменты Zend, потому что они являются основной компанией за PHP и полностью QA всеми их инструментами против всех версий PHP).
Если вы хотите скомпилировать свой PHP-код и связать с ним время выполнения PHP, а затем развернуть его (например, C\С++), тогда нет. Возможно, в теории это было бы возможно, но это было бы беспорядок. (Не практично или практически невозможно и не думайте, что кто-то поставил что-нибудь вместе, чтобы попытаться, и выход также будет привязан к определенной архитектуре).
Ответ 5
Если веб-сервер основан на Linux, вы можете создать пакет, например .deb или . rpm (в зависимости от дистрибутива Linux) и легко распространять/развертывать его.
BR, Dawid.