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

黄舟
Libérer: 2023-03-06 20:22:01
original
1407 Les gens l'ont consulté


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)
Copier après la connexion

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.
Copier après la connexion

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])
Copier après la connexion

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);

}
Copier après la connexion

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
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal