-
php7 requiere vc2015
Visual Studio 2015 Community Edition
PHP -sdk-binary-tools-20110915.zip ( http://windows.php.net/downloads/php-sdk/ download)
deps-7.0-vc14-x86 ( http: //windows.php .net / downloads / php-sdk / download)
php-7.0.2 ( http://php.net/downloads.php descargar)
primer paso
-
Descomprima el paquete binario de php-sdk-binary-tools, por ejemplo, lo descomprimo en mi carpeta D: \ vcmyprojects \ php-sdk, la estructura de directorio actual es la siguiente
D: \ vcmyprojects \ php-sdk
--bin
--script
--share
Entonces, esto es que ha instalado Visual Studio 2015. Abra el símbolo del sistema del desarrollador VS2015. Tenga en cuenta que debe usar esto para compilar. El cmd normal no funciona y ha tomado muchos desvíos. . .
-
#Entrar en el directorio
cd D: \ vcmyprojects \ php-sdk
-
#Establecer variables de entorno
bin \ phpsdk_setvars.bat
-
Edite el archivo c: \ php-sdk \ php-sdk-binary-tools \ bin \ phpsdk_buildtree.bat y
agréguelo antes de GOTO EXIT
MD% _% \ vc14 \ x86 \ deps \ binMD% _% \ vc14 \ x86 \ deps \ libMD% _% \ vc14 \ x86 \ deps \ includeMD% _% \ vc14 \ x64 \ deps \ binMD% _% \ vc14 \ x64 \ deps \ libMD% _% \ vc14 \ x64 \ deps \ include
-
#Crear directorios php-sdk de uso común
bin \ phpsdk_buildtree.bat phpdev
-
Descomprima deps-7.0-vc14-x86.7z en la carpeta D: \ vcmyprojects \ php-sdk \ phpdev \ vc14 \ x86 \ deps para cubrir, dentro están todos los archivos de la biblioteca que necesitamos y algunas herramientas necesarias y así sucesivamente.
-
Instale cygwin, utilizo la última versión x86, la descargo e instalo en c: \ cygwin, por lo que no es necesario modificar ext_skel_win32.php
Compila e instala php
Volver al símbolo del sistema del desarrollador VS2015
-
# Ingrese a la carpeta del directorio de origen de php
cd D: \ vcmyprojects \ php-sdk \ phpdev \ vc11 \ x86 \ php-7.0.2buildconf
-
#Ver los comandos de expansión y compilación del cinturón
configure --help
-
Si no tiene php instalado, aquí está ahora para ayudarlo, puede compilar e instalar php primero
configurar --disable-all --enable-cli
Luego, verá Type'nmake 'para compilar PHP y luego compilar
hacer
El archivo php.exe se genera en la carpeta D: \ vcmyprojects \ php-sdk \ phpdev \ vc11 \ x86 \ php-7.0.2 \ Release_TS, y esta ruta se agrega a la variable de entorno para que se pueda usar el comando php en la línea de comando.
Desarrollar la primera extensión de PHP
-
Ingrese al directorio de extensión y genere una carpeta de extensión
cd D: \ vcmyprojects \ php-sdk \ phpdev \ vc11 \ x86 \ php-7.0.2 \ extphp ext_skel_win32.php --extname = raintest1
En este momento, podemos ver nuestro directorio raintest1 en D: \ vcmyprojects \ php-sdk \ phpdev \ vc11 \ x86 \ php-7.0.2 \ ext, abrir raintest1 \ php_raintest1.h,
Abra ext \ y verá una carpeta de prueba, esta es su extensión.
-
Abra VS y seleccione "Archivo" - "Nuevo" - "Crear directorio a partir del código existente"
-
Elija C ++
-
Elija la ruta de la carpeta de extensión php aquí y asigne un nombre al proyecto
-
Seleccione "Usar visual studio", seleccione "Proyecto de biblioteca de vínculos dinámicos (DLL)" como el tipo de proyecto y, a continuación, pase de forma predeterminada al siguiente paso hasta su finalización.
-
Habrá muchos errores al principio, comenzaremos a configurar el proyecto.
-
Primero cambie la configuración de la solución del proyecto a Release
-
Propiedades del proyecto con el botón derecho del ratón, C / C ++, general, directorios de inclusión adicionales, editar
Agregue los siguientes directorios de código fuente php (el directorio real está sujeto al directorio del desarrollador):
E: \ php-xxx-srcE: \ php-xxx-src \ mainE: \ php-xxx-src \ TSRME: \ php-xxx-src \ Zend
Haga clic con el botón derecho en las propiedades del proyecto, C / C ++, preprocesador, definición del preprocesador, edite y agregue las siguientes variables:
ZEND_DEBUG = 0PHP_EXTENSIONPHP_WIN32ZEND_WIN32HAVE_XXX = 1COMPILE_DL_XXXZTS Tenga en cuenta que el XXX anterior debe cambiarse a una extensión en mayúsculas (si la extensión se llama tonyenc, cambie XXX a TONYENC), de lo contrario PHP no reconocerá la extensión. ZTS se usa para decirle al compilador que habilite la seguridad de subprocesos (si se elimina, no se habilita). Tenga en cuenta que si la seguridad de subprocesos está habilitada o no depende de C: \ php7-Win32-VC14-x64-ts descargado previamente, que también habilita la compilación de seguridad de subprocesos, por lo que la seguridad de subprocesos está habilitada aquí.
-
En la columna "Conector" - "Entrada" de la izquierda, en "Proyectos dependientes adicionales", agregue: C: \ php7-Win32-VC14-x64-ts \ dev \ php7ts.lib, que es la versión compilada descargada anteriormente Programa PHP.
-
Haga clic en Aceptar y luego seleccione "Generar" - "Generar solución" en el menú. Felicitaciones, el compilador informó un error: No se puede abrir el archivo de inclusión ../main/config.w32.h, luego cambie C: \ php7-Win32 -VC14 Copie -x64-ts \ win32 \ build \ config.w32.h.in a C: \ php7-Win32-VC14-x64-ts \ main \ config.w32.h (tenga en cuenta que no hay detrás), luego en config Agregue en .w32.h:
#define PHP_COMPILER_ID "VC14"
Esto indicará que la biblioteca en tiempo de ejecución es VC14, que coincide con el programa PHP compilado descargado anteriormente, y regenerará la solución para que pueda compilarse correctamente.
Prueba abierta.c
Encuentra este fragmento de código:
PHP_FUNCTION (confirm_test_compiled) { char * arg = NULL; int arg_len, len; char * strg; if (zend_parse_parameters (ZEND_NUM_ARGS () TSRMLS_CC, "s", & arg, & arg_len) == FALLO) { return; } len = spprintf (& strg, 0, "¡Felicitaciones! Ha modificado con éxito ext /%. 78s / config.m4. El módulo% .78s ahora está compilado en PHP.", "prueba", arg); RETURN_STRINGL (strg, len, 0); }
Cambiar confirm_test_compiled a test_echo
Encuentra este fragmento de código:
const zend_function_entry test_functions [] = { PHP_FE (confirm_test_compiled, NULL) / * Para probar, eliminar más tarde. * / PHP_FE_END / * Debe ser la última línea en test_functions [] * / };
Cambie el confirm_test_compiled adentro a test_echo
Genere la solución, busque su propia extensión php phptest.dll en la carpeta Release del directorio raíz del proyecto, cópiela en la carpeta ext de php y configúrela en php.ini:
extensión = phptest.dll
Reinicie IIS, cree un nuevo sitio, cree un archivo test.php en él
<? php echo test_echo ("123");
Ejecutar para obtener el resultado:
Esta función test_echo es nuestra propia función personalizada También puede desarrollar sus propias extensiones para mejorar el rendimiento de PHP de acuerdo a sus necesidades.
Reimpreso en: https://my.oschina.net/colin86/blog/897008