
Ich versuche, das in MacOS Catalina 10.15 integrierte PHP zu verwenden, indem ich die ZIP-Erweiterung selbst kompiliere.
Im neuen MacOS Catalina phpize
ist das Tool nicht mehr verwendbar, da es einen ungültigen Pfad zu den PHP-Bibliotheken enthält. Das Volume /usr
wird schreibgeschützt gemountet, wodurch alle bisher verwendeten Methoden ungültig werden.
ich installierteXcode 11aus dem AppStore.
Dann habe ich ein weiteres erstellt phpize
, das auf Xcode verweist, indem ich es auf meinen Desktop kopiert habe
cp /usr/bin/phpize ~/Desktop/
dann öffnete ich es zur Bearbeitung mitvim
vim ~/Desktop/phpize
und Zeile 8 wie folgt geändert
includedir = "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/php"
Dann heruntergeladenphp-7.3.8, dieselbe PHP-Version, die in MacOS Catalina 10.15 integriert ist.
Nachdem ich die Archivdatei im Downloads-Ordner entpackt hatte, öffnete ich das Terminal bis zu seinem Ordner
cd ~/Downloads/php-7.3.8/ext/zip
Sobald Sie drin sind, starten Sie das angepasste phpize, um die ZIP-Erweiterung für die Konfiguration vorzubereiten
~/Desktop/phpize
Die Erweiterung ist nun konfigurierbar. Ich habe configure mit zusätzlichem Pfad zum benötigtenzlib
sudo ./configure --with-zlib-dir=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/
Der nächste Schritt wäre kompilieren und installieren, aber ich bekomme immer noch den Fehlerphp.h file not found
make && make install
Vielleicht ist da noch irgendwo ein Irrweg...
Antwort1
CPPFLAGS
Sie können den Zeiger make
nach rechts verwenden /usr/include
, der sich im Inneren befindet Xcode.app
:
INCLUDE_PATH=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include
make CPPFLAGS="-I${INCLUDE_PATH}/php -I${INCLUDE_PATH}/php/main -I${INCLUDE_PATH}/php/TSRM -I${INCLUDE_PATH}/php/Zend -I${INCLUDE_PATH}/php/ext -I${INCLUDE_PATH}/php/ext/date/lib"
Beachten Sie auch, dass beim Bearbeiten phpize
keine Leerzeichen um das Rechtszeichen ( =
) stehen dürfen.
BEARBEITEN
Auch das Bearbeiten des Folgekommentars schlägt fehl, da die Erweiterung nicht an die richtige Stelle verschoben werden kann. Sie müssen den Befehl aber trotzdem ausführen, da er die Datei make install
signiert .*.so
Sobald make install
es ausgeführt wird, verschieben Sie die ausführbare Datei an einen sicheren Ort. Ich verwende /usr/local/php/extensions
.
Zum Beispiel mit Xdebug
(ändern Sie den .so
Namen in den Namen Ihrer Erweiterung):
sudo mkdir -p /usr/local/php/extensions
sudo cp $(php-config --extension-dir)/xdebug.so /usr/local/php/extensions
Anschließend bearbeiten Sie die PHP-Konfiguration, um Ihre Erweiterung zu aktivieren sudo nano /etc/php.ini
, indem Sie unten die erforderlichen Zeilen hinzufügen (ich kenne die genaue Zeile für „zip“ nicht).
Wenn dies erledigt ist, starten Sie zur Sicherheit den integrierten Server neu:
sudo apachectl restart