Heim > Artikel > Backend-Entwicklung > Beispielfreigabe von PHP-Erweiterungsentwicklungscode für eine LINUX-Umgebung
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)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: 2201212128 -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!