So entwickeln Sie PHP7-Erweiterungen mit VS2015 (vs14)
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.
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
Installieren aus dem Netzwerk
Laufwerk C ist standardmäßig installiert
Laden Sie den Cache nach Belieben herunter. Denken Sie daran, ihn nach der Installation zu löschen. Ich lege ihn auf den Desktop
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
Ä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.
Ö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“
Wählen Sie C++
Wählen Sie hier den Pfad Ihres PHP-Erweiterungsordners aus und geben Sie ihn dem Projekt. Benennen Sie ihn
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.
5. Beim ersten Öffnen werden viele Fehler auftreten. Als nächstes beginnen wir mit der Konfiguration.
Ändern Sie zunächst die Konfiguration der Projektlösung in „Release“
Klicken Sie mit der rechten Maustaste auf die Projekteigenschaften, C/C++, Allgemein, zusätzliche Include-Verzeichnisse, bearbeiten Sie
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.
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); }
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[] */ };
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-TutorialDas 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!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

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

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

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

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

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

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

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

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
