2009-12-04 27 views
16

¿Es posible convertir un archivo PHP a binario y desplegarlo en un servidor web?Convertir archivo PHP a binario

+0

¿Qué quiere decir convert to binary? PHP es un lenguaje interpretado, lo que significa que se lee línea por línea y se ejecuta (más o menos). No se compila en un archivo binario como C, simplemente coloca el archivo en un directorio web y permite que el usuario acceda a él; por supuesto, el servidor web debe ejecutar PHP. – Anthony

+6

Quiere encriptar el código fuente y distribuirlo como un ejecutable para que nadie pueda robar y alterar el código para su reutilización, ¿no? –

+1

vamos realmente ... ¿no puedes hacer un mejor trabajo al hacer una pregunta? .. no tiene idea de lo que estás tratando de hacer –

Respuesta

20

Dado que PHP es un lenguaje (relativamente) portátil, es preferible compilar la fuente de PHP a bytecode en lugar de código binario. Para este propósito hay un proyecto experimental llamado bcompiler.

+0

Gracias .. ....................... – Hulk

+0

También hay roadsend, que (creo) está utilizando partes de phpc después de que abandonaron el esquema. –

+0

phc es un poco difícil de instalar, y roadsend parece ser más lento que ejecutar archivos a través del intérprete php. –

1

Depende de lo que quiere decir con "binario".

Si desea compilar (o simplemente ofuscar) su código PHP para evitar que otra persona lo modifique, utilice un compilador de códigos de bytes. Un ejemplo son las herramientas de Zend, entre otros. (Prefiero las herramientas de Zend porque son la compañía principal detrás de PHP y totalmente QA todas sus herramientas contra todas las versiones de PHP).

Si desea compilar su código PHP y vincular el tiempo de ejecución de PHP con él y luego implementarlo (como C \ C++), entonces no. Tal vez en teoría eso sería posible, pero sería un desastre. (No es práctico ni factible y no creo que alguien haya puesto algo en común para intentarlo y la salida también estaría vinculada a una arquitectura particular).

+0

Gracias ......................... – Hulk

+2

Acerca de ..................... demasiados puntos – Garrett

1

Si el servidor web está basado en Linux, puede crear un paquete como .deb o .rpm (según la distribución de Linux) y distribuirlo/implementarlo fácilmente.

BR, Dawid. Hace

+0

¿Alguna vez leyó la pregunta? –

+1

No es una mala respuesta. La pregunta parece ser preguntar "¿Cómo puedo convertir archivos php en un programa distribuible". –

+2

Convertir un archivo PHP en un archivo binario no es lo mismo convertir un archivo PHP en un programa distribuible. –

10

Algunos meses he buscado por ella (la protección del código php o la protección de la escritura) y mis resultados fueron:

proporciono alguna descripción, pero trato de google ellos y con perdón.

Tenga cuidado con su búsqueda, ya que puede encontrar compresores php y los compresores son casi GZIP y otros mecanismos de compresión de transferencia http.

Los problemas más importantes con script php que protegen herramientas son:

  1. ¿Cuánta velocidad de rendimiento de PHP en tiempo de ejecución obtendrá baja (abajo) (cuánta velocidad hacia abajo)

  2. necesitaremos una ambiente adicional o herramientas instaladas en el servidor php?

  3. fácil manejo

Encontrará acerca de la descripción entera y la comparación en: http://www.seocompany.ca/software/free-encryption-software.html

Obfuscators

Una gran cantidad de ofuscadores se encuentra en la web, pero no hay garantía para que tus códigos funcionen

Incluso he encontrado una forma mixta con Visual C++ y MSVS para ofuscar php y porque también tengo experiencia con asp.net he comprobado sin embargo no funcionó.

Convertidores y taquillas

  • iones protector de (http://www.ioncube.com/): Oh, no es libre pero he oído muchos acerca de su famoso nombre

  • APS (php compilador): libre y fue un buen caso pero "Brendan Long" dijo la verdad porque phc tiene una forma de instalación dolorosa. Sin embargo el resultado es mágico y tiene un nombre famoso como ion

  • php Locker: Lo tengo y lo pruebo. Tenía un error con el código compilado y se lanzó por debajo de php5. Absolutamente no es gratis y para quien está pensando en ccr-ac * ks encontrarlo para el casillero de php es imposible.

  • Zend Guard: Una manera perfecta de guardia, pero es más difícil que la APS o ion porque se necesita el entorno de ejecución de Zend (ERZ) en su servidor y Zend Guard es absolutamente no es libre, sin embargo, si usted es un hombre de Zend (zend framework + zend IDE + zend Guard) deberías saber que Zend Guard es compatible con zend IDE y el proceso de bloqueo de código será tan fácil. No soy un tipo Zend porque obviamente Zend Framework y Zend Guard bajan la velocidad del tiempo de ejecución. Me encanta el tiempo de ejecución de php.

  • php -> C/C++ compiling (SI ES POSIBLE) (MEJOR RENDIMIENTO EN TODO EL MUNDO): No es tan famoso, por lo que es normal que nadie hable.

  • facebook hiphop: Esta herramienta está utilizando Facebook para compilar archivos php en C++/c para obtener un mejor rendimiento sin embargo, finalmente tenemos códigos compilados ilegibles. No lo recuerdo, pero creo que necesita una buena familiaridad con Linux o sobre el mecanismo de recompilación de php en Microsoft Visual C++. (Sin embargo no CONFÍES a mi memoria débil y google) (Y para el aprendizaje de PHP RECOMPILE MANERA PLZ refieren a la última versión de php_manual.chm)

finalmente hice mi ser sencilla ofuscador php usando expresiones regulares que funcionó en php 5.3 y mis scripts complejos, así que me moví a OpenSSL y diferentes mecanismos de encriptación y obtuve una revisión sobre el desarrollo seguro de php.

Le deseamos éxito.

2

Esto es un retraso, pero debería hacer lo que quiera.

Cree su propia extensión personalizada con el motor zend, ya que compilan a un C++ dll. Agregue ese dll a su ubicación ext en el directorio php. Después de eso puedes llamar a tus propios scripts php como funciones php. Tenga en cuenta que php solo está en el servidor para que nadie pueda obtener sus scripts a menos que los copie del servidor y los entregue.

Descargue la biblioteca fuente php para la versión que tiene. [windows.php.net] Se incluirán las cosas necesarias que necesites.

Paso 1. Cree un nuevo proyecto y seleccione "General" en Visual C++ y la opción de proyecto vacía. Déle un nombre y haga clic en Aceptar. El mío es Project1, así que lo usaré.

Paso 2. Haga clic con el botón derecho en el nombre de la solución y seleccione las propiedades. Seleccione Biblioteca dinámica (.dll) En Valores predeterminados del proyecto/Tipo de configuración en el elemento Propiedades de configuración/General. Asegúrese de estar cambiando las configuraciones de Debug ya que no se usa Release.

Paso 3. En Directiories VC++ añadir el siguiente bajo las bibliotecas incluyen: 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 \ principal C: \ php-7.1.8-src Bibliotecas: C: \ php-7.1.8 \ dev

Paso 4. Debajo del Preprocesador C/C++, agregue ZEND_DEBUG = 0; ZTS = 1; ZEND_WIN32; PHP_WIN32 a Preprocesador Definiciones

Paso 5. En Enlazador de Entrada, agregue php7ts.lib. Esto debe coincidir con la lib para su versión de php

Haga clic en Aceptar para guardar la configuración de Propiedades para su solución.

Ahora vamos a añadir un archivo de código para su función (Project1)

En los archivos de origen carpeta botón derecho del ratón y agregar código. Llamé a la mía Project1.cpp y aquí está la fuente. Tendrá que cambiar el nombre de config.w32.h.in a config.w32.h y copiarlo en los directorios donde sea necesario. Intellisense debe decirle dónde está buscando y config.w32.h.in está en el directorio 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); 
} 

Presione F7 para compilar y debería crear Project1 \ Debug \ Project1.dll. Copie Project1 a su directorio ext C: \ php-7.1.8 \ ext y agregue una extensión = Project1.dll a su php.ini y debería estar listo. Si no funciona, comprueba dos veces tus propiedades para asegurarte de que no te pierdas nada.

The script is quite simple: 

<?php 
echo ReturnString("The Returning String"); 
?>