Heim >Backend-Entwicklung >PHP-Tutorial >Beispielfreigabe von PHP-Erweiterungsentwicklungscode für eine LINUX-Umgebung

Beispielfreigabe von PHP-Erweiterungsentwicklungscode für eine LINUX-Umgebung

黄舟
黄舟Original
2017-03-22 10:05:001399Durchsuche


Die Schritte zum Entwickeln von PHP-Erweiterungen in einer Linux-Umgebung sind wie folgt:

1. Laden Sie den PHP-Quellcode herunter und entpacken Sie ihn Verzeichnis ist: /root /lamp/php-5.5.37

2. Wechseln Sie mit der CD in das Verzeichnis /root/lamp/php-5.5.37/ext und erstellen Sie die Datei test_extension.def

int a(int x, int y)string b(string str, int n)
3. Erzeugen Sie ein Framework-Verzeichnis, indem Sie den

FrameworkGenerator erweitern: ext_skel –extname=test_extension –proto=test_extension.def
Die Ergebnisse der erfolgreichen Generierung lauten wie folgt:

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. Wechseln Sie in das generierte Framework-Verzeichnis: cd test_extension

5. Ändern Sie die
Konfigurationsdatei config.m4 und entfernen Sie 10. 11 und 12 Das dnl vor der Zeile lautet wie folgt:

PHP_ARG_WITH(test_extension, for test_extension support,
Make sure that the comment is aligned:
[  --with-test_extension             Include test_extension support])
6. Um die Funktionen von

Funktion a und b zu implementieren, vi test_extension.c, die geänderten Funktionen a und b lauten wie folgt:

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. Im Verzeichnis test_extension ausführen: /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. Installieren: make install
Nach Abschluss der Installation wird test_extension.so unter /usr/local generiert /lib/php/extensions/no-debug-zts-20121212/

11. Ändern Sie php.in und fügen Sie hinzu: extension=test_extension.so

Das obige ist der detaillierte Inhalt vonBeispielfreigabe von PHP-Erweiterungsentwicklungscode für eine LINUX-Umgebung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn