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.372. Wechseln Sie mit der CD in das Verzeichnis /root/lamp/php-5.5.37/ext und erstellen Sie die Datei test_extension.defint a(int x, int y)string b(string str, int n)
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.
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])
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); }
Configuring for: PHP Api Version: 20121113Zend Module Api No: 20121212Zend Extension Api No: 220121212
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!