Red de conocimiento informático - Conocimiento informático - Cómo escribir extensiones PHP C

Cómo escribir extensiones PHP C

I. Primero, descargue el paquete de código fuente PHP, asumiendo que el directorio del paquete de código fuente es /software/php-5.2.13

Primero, descargue el paquete de código fuente PHP, asumiendo que el código fuente El directorio del paquete es /software/php-5.2.

#>cd/software/php-5.2.13/ text

2. Supongamos que queremos desarrollar una extensión llamada caleng_module. que contiene dos funciones: a - Procesar la suma de dos números enteros; b - procesar la salida repetida de cadenas;

1. Primero escriba un archivo de definición de función, en el que esté escrito el prototipo de función con el sufijo def, asumiendo: caleng_module.def

int a(int x, int y)

string b(string str, int n)

2. generador, creará automáticamente el directorio de extensión caleng_module

#>.

/ext_skel --extname=caleng_module --proto=caleng_module.def

3. Modifique el archivo de configuración: #> vim /software/php-5.2.13/ext/caleng_module/config.m4. siguientes líneas La marca de comentario "dnl" se modifica de la siguiente manera:

PHP_ARG_ENABLE(myfunctions, si se debe habilitar el soporte de myfunctions,

Asegúrese de que los comentarios estén alineados:

[ --enable- myfunctions habilita el soporte de myfunctions])

4. Mejorar las funciones a y b: #> vim /software/php-5.2.13/ext/caleng_module/ caleng_module.c

PHP_FUNCTION(a )

{

int x, y, z;

int argc = ZEND_NUM_ARGS();

if (zend_parse_parameters(argc TSRMLS_CC , "ll", &x, &y) == FALLO)

return;

z = x + y;

RETURN_LONG (z);

}

PHP_FUNCTION(b)

{

char *str = NULL;

int argc = ZEND_NUM_ARGS() ;

int str_len;

long n;

char *resultado;

char *ptr;

int resultado _length;

if (zend_parse_parameters(argc TSRMLS_CC, "sl", &str, &str_len, &n) == FALLO)

return; p>

result_length = str_len * n;

resultado = (char *) emalloc(result_length + 1);

ptr = resultado; mientras (n--) {

memcpy(ptr, str, str_len

ptr += str_len;

}

*ptr='/0' ;

RETURN_STRINGL(result, result_length, 0);

}

3. Compile e instale, asumiendo que el directorio de instalación de php es: /usr/ localhost/ webserver/php

#> cd /software/php-5.2.13/ext/caleng_module

#> /usr/localhost/webserver/ php/bin/phpize

#> ./configure --with-php-config=/usr/localhost/webserver/php/bin/php-config

#> make

#> make install

Ahora se instalará en /usr/local/webserver/php/lib/php/exte

nsions/no-debug-non-zts-20060613

El archivo caleng_module.so se generará en /usr/webserver/php/lib/php/extensions/no-debug-non-zts-20060613 directorio

Inserte el archivo caleng_module.so en el archivo de configuración php.ini y agregue: extensión=caleng_ module.so.

Completado