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

黄舟
Freigeben: 2023-03-06 20:22:01
Original
1393 Leute haben es durchsucht


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)
Nach dem Login kopieren
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.
Nach dem Login kopieren
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])
Nach dem Login kopieren
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);

}
Nach dem Login kopieren
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
Nach dem Login kopieren
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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage