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

So entwickeln Sie PHP7-Erweiterungen mit VS2015 (vs14)

Jun 22, 2021 am 09:18 AM

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

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

Ä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[] */
};
Nach dem Login kopieren
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!

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Repo: Wie man Teamkollegen wiederbelebt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie nutze ich Sitzungen effektiv in PHP 7? Wie nutze ich Sitzungen effektiv in PHP 7? Mar 10, 2025 pm 06:20 PM

In diesem Artikel wird das effektive PHP 7 -Sitzungsmanagement beschrieben, das Kernfunktionen wie Session_Start (), $ _Session, Session_destroy () und Secure Cookie -Handhabung abdeckt. Es betont die Best Practices der Sicherheitsbekämpfung, einschließlich HTTPS, Sitzungs -ID -Regeneration, s

Wie kann man PHP 7 -Leistung mit Tools wie New Relic überwachen? Wie kann man PHP 7 -Leistung mit Tools wie New Relic überwachen? Mar 10, 2025 pm 06:28 PM

In diesem Artikel wird erläutert, wie die PHP 7 -Anwendungsleistung mithilfe von New Relic überwacht wird. Es enthält die Einrichtung von New Relic, die wichtigsten Leistungsindikatoren (KPIs) wie APDEX -Score und Reaktionszeit, Engpassidentifikation über Transaktionsspuren und Fehlerspuren

Wie Upgrade von PHP 5.6 auf Php 7? Wie Upgrade von PHP 5.6 auf Php 7? Mar 10, 2025 pm 06:29 PM

In diesem Artikel wird das Upgrade von PHP 5.6 auf PHP 7 aufgeführt und wichtige Schritte wie das Sichern, die Überprüfung der Serverkompatibilität und die Auswahl einer Upgrade -Methode (Paketmanager, Kompilieren, Bedienfeld oder Webserverkonfiguration) betont. Es spricht Potentia an

Wie benutze ich Git für die Versionskontrolle in PHP 7 -Projekten? Wie benutze ich Git für die Versionskontrolle in PHP 7 -Projekten? Mar 10, 2025 pm 06:27 PM

Dieser Artikel führt PHP 7 -Entwickler bei der Verwendung von Git für die Versionskontrolle. Es deckt Initialisierung, Inszenierung, Verpflegung, Ignorieren von Dateien, Remote -Repositorys, Verzweigungen, Zusammenführungen, Konfliktlösung und wesentliche Git -Befehle ab. Best Practices für Effizienz

Wie kann ich in PHP 7 Klassen automatisch laden? Wie kann ich in PHP 7 Klassen automatisch laden? Mar 10, 2025 pm 06:20 PM

In diesem Artikel wird das Autoloading von PHP 7 unter Verwendung von spl_autoload_register () erläutert, um Klassen auf Bedarf zu laden. Es beschreibt Best Practices wie Namespace-basierte Autoloading und Caching für die Leistungsoptimierung, befasst sich mit gemeinsamen Problemen (z. B. Klasse, die nicht gefunden wurden

Wie bereitete ich eine PHP 7 -Anwendung auf einem Webserver bereit? Wie bereitete ich eine PHP 7 -Anwendung auf einem Webserver bereit? Mar 10, 2025 pm 06:28 PM

In diesem Artikel wird Details zur Bereitstellung von PHP 7-Anwendungen, Abdeckungsmethoden (FTP, SSH, Bereitstellungstools), Serverkonfiguration (Apache/Nginx, PHP-FPM), Datenbank-Setup und entscheidende Sicherheitsüberlegungen bereitgestellt. Es zeigt häufig vorkommende Herausforderungen wie Server Compatib

Wie benutze ich XDebug zum Debuggen von PHP 7 -Code? Wie benutze ich XDebug zum Debuggen von PHP 7 -Code? Mar 10, 2025 pm 06:26 PM

In diesem Artikel wird erläutert, wie XDEBUG zum Debuggen von PHP 7 -Code verwendet wird. Es deckt die XDebug -Konfiguration (Installation, Php.ini -Einstellungen, IDE -Setup), Breakpoint -Verwendung (bedingt, Funktion, Fernbedienung) und Fehlerbehebung mit Verbindungsproblemen ab. Effektives Debuggi

Wie füge und fordern Sie Dateien in PHP 7 ein und benötigen Sie? Wie füge und fordern Sie Dateien in PHP 7 ein und benötigen Sie? Mar 10, 2025 pm 02:52 PM

In diesem Artikel werden die Methoden zur Einschlussmethoden für die Dateieinschluss in den PHP 7 erläutert, include_once, Forderung und Request_once -Datei einbezogen. Es beschreibt ihre Unterschiede in der Fehlerbehandlung (Warnungen gegen fatale Fehler) und die Prävention mehrerer Einschlüsse. Best Practices für Dateiorganisation

See all articles