Heim >Backend-Entwicklung >PHP7 >So entwickeln Sie PHP7-Erweiterungen mit VS2015 (vs14)

So entwickeln Sie PHP7-Erweiterungen mit VS2015 (vs14)

醉折花枝作酒筹
醉折花枝作酒筹nach vorne
2021-06-22 09:18:142034Durchsuche

In diesem Artikel erfahren Sie, wie Sie PHP7-Erweiterungen mit VS2015 (vs14) entwickeln. Es hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen. Ich hoffe, es wird für alle hilfreich sein.

So entwickeln Sie PHP7-Erweiterungen mit VS2015 (vs14)

Vorbereitende Arbeiten vor der Entwicklung:

VS (ich verwende 2013)

Cygwin (Download-Adresse: http://www.cygwin.com/)

IIS7.5 ausgestattet mit PHP-Betriebsumgebung (zum Testen verwendet). )

php-kompiliertes Programm und Quellcode vor der Kompilierung, ich verwende die neueste Version 7.0.5 (Download-Adresse: http://windows.php.net/download#php-7.0)

kompilierter Programmpfad: E: vs_c+ +testphpextphp-7.0.5-src

Quellcodepfad vor der Kompilierung: E:vs_c++testphpextphp-7.0.5-nts-Win32-VC14-x86

Schritte:

1. Installation Cygwin

So entwickeln Sie PHP7-Erweiterungen mit VS2015 (vs14)

Installieren aus dem Netzwerk

So entwickeln Sie PHP7-Erweiterungen mit VS2015 (vs14)

Laufwerk C ist standardmäßig installiert

So entwickeln Sie PHP7-Erweiterungen mit VS2015 (vs14)

Laden Sie den Cache nach Belieben herunter. Denken Sie daran, ihn nach der Installation zu löschen. Ich lege ihn auf den Desktop

So entwickeln Sie PHP7-Erweiterungen mit VS2015 (vs14)

So entwickeln Sie PHP7-Erweiterungen mit VS2015 (vs14)

In China Wählen Sie einfach http://mirrors.163.com und fahren Sie bis zum Ende mit dem nächsten Schritt fort.

2. Finden Sie das PHP-Quellcodeverzeichnis, das mir gehört (E:vs_c++testphpextphp-7.0.5-src, dies wird unten zur Darstellung des Quellcodeverzeichnisses verwendet) und öffnen Sie E:vs_c++testphpextphp-7.0.5 -srcextext_skel_win32.php

So entwickeln Sie PHP7-Erweiterungen mit VS2015 (vs14)

Ändern Sie dies in Ihr Cygwin-Installationsverzeichnis. Meins ist das Laufwerk C, es besteht also keine Notwendigkeit, es zu ändern.

3. Führen Sie cmd aus, geben Sie E ein: vs_c++testphpextphp-7.0.5-srcext, führen Sie php.exe ext_skel_win32.php --extname=test aus, wobei test Ihre PHP-Erweiterung darstellt.

So entwickeln Sie PHP7-Erweiterungen mit VS2015 (vs14)

Öffnen Sie E: vs_c++testphpextphp-7.0.5-srcext und Sie sehen einen Testordner. Dies ist Ihre Erweiterung.

4. Öffnen Sie VS und wählen Sie „Datei“ – „Neu“ – „Verzeichnis aus vorhandenem Code erstellen“

So entwickeln Sie PHP7-Erweiterungen mit VS2015 (vs14)

Wählen Sie C++

So entwickeln Sie PHP7-Erweiterungen mit VS2015 (vs14)

Wählen Sie hier den Pfad Ihres PHP-Erweiterungsordners aus und geben Sie ihn dem Projekt. Benennen Sie ihn

So entwickeln Sie PHP7-Erweiterungen mit VS2015 (vs14)

und wählen Sie „Visual Studio verwenden“ und wählen Sie „Dynamic Link Library (DLL)-Projekt“ als Projekttyp. Der nächste Schritt ist der Standard bis zur Fertigstellung.

So entwickeln Sie PHP7-Erweiterungen mit VS2015 (vs14)

5. Beim ersten Öffnen werden viele Fehler auftreten. Als nächstes beginnen wir mit der Konfiguration.

So entwickeln Sie PHP7-Erweiterungen mit VS2015 (vs14)

Ändern Sie zunächst die Konfiguration der Projektlösung in „Release“

So entwickeln Sie PHP7-Erweiterungen mit VS2015 (vs14)

Klicken Sie mit der rechten Maustaste auf die Projekteigenschaften, C/C++, Allgemein, zusätzliche Include-Verzeichnisse, bearbeiten Sie

So entwickeln Sie PHP7-Erweiterungen mit VS2015 (vs14)

und fügen Sie die folgenden PHP-Quellcodeverzeichnisse hinzu ( das eigentliche Verzeichnis beginnt mit Das eigene Verzeichnis des Entwicklers hat Vorrang): 7.0.5- srcTSRM

E:vs_c++testphpextphp-7.0.5-srcZend

Rechtsklick auf Projekteigenschaften, C/C++, Präprozessor, Präprozessordefinition, Bearbeiten, Hinzufügen der folgenden Variablen:

ZEND_DEBUG=0

PHP_EXTENSION

PHP_WIN32

ZEND_WIN32

HAVE_TEST=1 (Der rote Teil hier muss in Ihren Erweiterungsnamen geändert werden. Wenn Sie ihn nicht in Ihren Erweiterungsnamen ändern, wird PHP ihn nicht erkennen it)

COMPILE_DL_TEST (Der rote Teil hier muss in Ihren Erweiterungsnamen geändert werden. Wenn Sie ihn nicht in Ihren Erweiterungsnamen ändern, wird PHP ihn nicht erkennen)

ZTS (Das Hinzufügen dieser Variablen aktiviert die Thread-Sicherheit. Wenn Sie sie nicht hinzufügen, wird die Thread-Sicherheit deaktiviert. Sie können beurteilen, ob diese Variable hinzugefügt werden soll, je nachdem, ob das von Ihnen kompilierte PHP thread-sicher ist. PS: Ich habe hier einen Verlust erlitten, weil ich es getan habe antwortet nicht darauf, was dazu führte, dass PHP fehlschlug.

So entwickeln Sie PHP7-Erweiterungen mit VS2015 (vs14)

Generieren Sie die Lösung. Die Fehlermeldung zeigt an, dass „config.w32.h“ nicht gefunden werden kann das Quellcode-Dateiverzeichnis, in E: vs_c++testphpextphp-7.0 Suchen Sie „config.w32.h.in“ im Ordner .5-srcwin32build, kopieren Sie diese Datei nach E:vs_c++testphpextphp-7.0.5-srcmain Ordner, entfernen Sie das „.in“ am Ende

und generieren Sie es erneut Lösung, Fehlermeldung LNK1120 anzeigen

Fehler 7 Fehler LNK1120: 5 ungelöste externe Befehle E: vs_c++testphpextphp-7.0.5-srcexttestReleasephptest.dll 1 1 phptest

Rechtsklick auf Projekteigenschaften, Connector, Eingabe, Abhängigkeiten anhängen, bearbeiten, den Pfad zu php5.lib eingeben (diese Datei befindet sich im PHP-kompilierten Programmordner, im Dev-Ordner des Stammverzeichnisses)

Hinweis: In Damit die Erweiterung mit der PHP-Laufumgebung übereinstimmt, muss sie auf basieren. Fügen Sie für die kompilierte Version Ihrer PHP-Laufumgebung (php7.0.5 wird von VC14 kompiliert) Folgendes hinzu:

#define PHP_COMPILER_ID "VC14"

zur Datei config.w32.h im E: vs_c++testphpextphp-7.0.5-srcmain-Ordner. Öffnen Sie E: vs_c++testphpextphp-7.0.5-srcexttesttest.c des Codes noch einmal:

PHP_FUNCTION(confirm_test_compiled)
{
    char *arg = NULL;
    int arg_len, len;
    char *strg;

    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &arg, &arg_len) == FAILURE) {
        return;
    }

    len = spprintf(&strg, 0, "Congratulations! You have successfully modified ext/%.78s/config.m4. Module %.78s is now compiled into PHP.", "test", arg);
    RETURN_STRINGL(strg, len, 0);
}

Ändern Sie secure_test_compiled in test_echo

Generieren Sie die Lösung, suchen Sie Ihre eigene PHP-Erweiterung phptest.dll im Release-Ordner des Projektstammverzeichnisses, kopieren Sie sie in den ext-Ordner von PHP und konfigurieren Sie sie in php.ini:

extension=phptest.dll

Starten Sie IIS neu, erstellen Sie eine neue Site, erstellen Sie darin eine neue test.php-Datei

const zend_function_entry test_functions[] = {
    PHP_FE(confirm_test_compiled,    NULL)        /* For testing, remove later. */
    PHP_FE_END    /* Must be the last line in test_functions[] */
};

Führen Sie es aus und erhalten Sie das Ergebnis:

Diese test_echo-Funktion ist unsere Sie können auch Ihre eigene Erweiterung entsprechend Ihren Anforderungen entwickeln, um die PHP-Leistung zu verbessern.

Empfohlenes Lernen:

php-Video-Tutorial

So entwickeln Sie PHP7-Erweiterungen mit VS2015 (vs14)

Das obige ist der detaillierte Inhalt vonSo entwickeln Sie PHP7-Erweiterungen mit VS2015 (vs14). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen