Heim >Backend-Entwicklung >PHP-Tutorial >Generierung und Kompilierung von PHP-Erweiterungen
Lassen Sie mich zunächst erklären, dass es zwei Kompilierungsmethoden für PHP-Erweiterungen gibt:
Methode 1: Kompilieren Sie die Erweiterung direkt beim Kompilieren von PHP
Methode 2: Die Erweiterung wird in eine .so-Datei kompiliert und konfiguriert in php.ini Ladepfad;
Die Schritte zum Erstellen und Kompilieren einer PHP-Erweiterung werden unten erklärt:
Laden Sie den PHP-Quellcode herunter, entpacken Sie ihn und starten Sie den Vorgang im Stammverzeichnis des Quellcodes ,
1. Verwenden Sie ext_skel, um das Erweiterungsframework wie folgt zu generieren:
➜ php-5.6.24 cd ~/Downloads/tmp/php-5.6.24➜ php-5.6.24 cd ext
➜ ext ./ext_skel --extname=myfirstext
Nachdem ext_skel ausgeführt wurde, wird der Entwickler zu weiteren Schritten aufgefordert. Dieser Schritt ist der erste der beiden erweiterten Schritte Kompilierungsmethoden wie folgt:
To use your new extension, you will have to execute the following steps: $ cd .. $ vi ext/plogger/config.m4 $ ./buildconf $ ./configure --[with|enable]-plogger $ make $ ./sapi/cli/php -f ext/plogger/plogger.php $ vi ext/plogger/plogger.c $ make
2. Ändern Sie die Datei ext/myfirstext/config.m4
Konzentrieren Sie sich beim Einstellen auf den Code von Zeile 10-18, der zum Aktivieren dieser erweiterten Befehlsoption verwendet wird ./configure und löschen Sie die DNL von Zeile 16 und Zeile 18. Verstehen Sie DNL als Kommentarzeichen.
dnl Otherwise use enable: 16 dnl PHP_ARG_ENABLE(myfirstext, whether to enable myfirstext support, dnl Make sure that the comment is aligned: dnl [ --enable-myfirstext Enable myfirstext support]) 20 if test "$PHP_MYFIRSTEXT" != "no"; then dnl Write more examples of tests here...
Die beiden oben genannten Schritte werden im Folgenden vorgestellt.
Methode 1: Kompilieren Sie die Erweiterung direkt beim Kompilieren von PHP Code-Stammverzeichnis Führen Sie ./buildconf wie folgt im Verzeichnis aus
4. Führen Sie ./configure –enable-myfirstext im Quellcode-Stammverzeichnis aus
Um die Kompilierungszeit zu verkürzen, können Sie festlegen, dass bestimmte Module währenddessen nicht kompiliert werden die Konfigurationsphase, wie zum Beispiel:
im Quellcode-Stammverzeichnis aus. Führen Sie nach erfolgreicher Kompilierung nicht make install aus, da zu diesem Zeitpunkt die Erweiterung vorhanden ist myfirstext wurde erfolgreich kompiliert und die entsprechende PHP-Binärdatei wurde generiert. Sie befindet sich in ./sapi/cli/php
3. Führen Sie den phpize-Befehl im Erweiterungsverzeichnis ext/myfirstext/ aus.
4. Führen Sie den Befehl ./configure –enable-myfirstext/aus make im Erweiterungsverzeichnis ext/myfirstext/
Nach der Ausführung von make wird es unter ext/myfirstext/modules generiert. Konfigurieren Sie die entsprechende .so-Datei in php.ini und laden Sie diese Datei.
Überprüfen Sie, ob die Erweiterung erfolgreich geladen wurde
Oder listen Sie alle Erweiterungen über php -m auf, um zu sehen, ob es myfirstext gibt . Führen Sie den Befehl aus: ./sapi/cli/php -m |. Wenn die obige Überprüfung bestanden wurde, bedeutet dies, dass die Erweiterung erfolgreich kompiliert wurde. Aber bisher habe ich den C-bezogenen Code nicht bearbeitet. Alles wird standardmäßig von ext_skel generiert. Überprüfen Sie, welche Funktionen diese Erweiterung myfirstext enthält. Wie folgt:
➜ php-5.6.24 ./sapi/cli/php -r 'print_r(get_extension_funcs("myfirstext"));'
OK, soweit bekannt Generierung, Konfiguration und Kompilierung des PHP-Erweiterungsframeworks. Als nächstes müssen wir der Erweiterung myfirstext eine eigene Funktion hinzufügen.