Maison >développement back-end >tutoriel php >Partage d'exemples de code de développement d'extension PHP pour l'environnement LINUX

Partage d'exemples de code de développement d'extension PHP pour l'environnement LINUX

黄舟
黄舟original
2017-03-22 10:05:001435parcourir


Les étapes pour développer des extensions PHP dans l'environnement LINUX sont les suivantes :

1. Téléchargez le code source PHP et décompressez-le. Le répertoire est : /root /lamp/php-5.5.37

2. cd dans le répertoire /root/lamp/php-5.5.37/ext et créez le fichier test_extension.def

int a(int x, int y)string b(string str, int n)

3. Générez un répertoire framework en étendant le FrameworkGénérateur :
ext_skel –extname=test_extension –proto=test_extension.def
Les résultats de génération réussie sont les suivants :

Creating directory test_extension
awk: /root/lamp/php-5.5.37/ext/skeleton/create_stubs:56: warning: escape sequence `\|' treated as plain `|'
Creating basic files: config.m4 config.w32 .svnignore test_extension.c php_test_extension.h CREDITS EXPERIMENTAL tests/001.phpt test_extension.
php [done].To use your new extension, you will have to execute the following steps:
1.  $ cd ..
2.  $ vi ext/test_extension/config.m4
3.  $ ./buildconf
4.  $ ./configure --[with|enable]-test_extension
5.  $ make
6.  $ ./sapi/cli/php -f ext/test_extension/test_extension.php
7.  $ vi ext/test_extension/test_extension.c
8.  $ make
Repeat steps 3-6 until you are satisfied with ext/test_extension/config.m4 and
step 6 confirms that your module is compiled into PHP. Then, start writing
code and repeat the last two steps as often as necessary.

4. Basculez vers le répertoire du framework généré : cd test_extension
5 Modifiez le fichier de configuration config.m4 et supprimez 10, 11, et 12 Le dnl devant la ligne est le suivant

PHP_ARG_WITH(test_extension, for test_extension support,
Make sure that the comment is aligned:
[  --with-test_extension             Include test_extension support])

6. Pour implémenter les fonctions de fonction a et b, vi test_extension.c, les fonctions modifiées a et b sont les suivants

PHP_FUNCTION(a)
{        
int argc = ZEND_NUM_ARGS();        
long x;        
long y;        
if (zend_parse_parameters(argc TSRMLS_CC, "ll", &x, &y) == FAILURE)
        {
                php_error(E_WARNING, "zend_parse_parameters failure!");                
                return;
        }
        RETURN_LONG(x + y);
}

PHP_FUNCTION(b)
{        
char *str = NULL;        
int argc = ZEND_NUM_ARGS();        
int str_len;        
long n;        
char *result;        
char *ptr;        
int result_length;        
if (zend_parse_parameters(argc TSRMLS_CC, "sl", &str, &str_len, &n) == FAILURE)
        {
        
                php_error(E_WARNING, "zend_parse_parameters failure!");                
                return;
        }
        result_length = str_len * n;
        result = (char *) emalloc(result_length + 1);
        ptr = result;        while (n--) {
                memcpy(ptr, str, str_len);
                ptr += str_len;
        }
        *ptr = '/0';
        RETURN_STRINGL(result, result_length, 0);

}

7 Exécuter dans le répertoire test_extension : /usr/local/bin/phpize

Configuring for:
PHP Api Version:         
20121113Zend Module Api No:      
20121212Zend Extension Api No:   
220121212

8. -config=/usr/local/bin/php-config
9. Compiler : make
10. Installer : make install
Une fois l'installation terminée, test_extension.so sera généré sous /usr/local. /lib/php/extensions/no-debug-zts-20121212/

11. Modifiez php.in et ajoutez : extension=test_extension.so

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn