Maison  >  Article  >  cadre php  >  Solution au problème lors de la compilation et de l'installation de Swoole sur Mac que le fichier .h n'existe pas

Solution au problème lors de la compilation et de l'installation de Swoole sur Mac que le fichier .h n'existe pas

谨言慎行
谨言慎行original
2020-11-05 14:27:312335parcourir

Avant-propos

1. En fait, je ne m'attendais vraiment pas à ce que le processus d'installation soit aussi Emmm... Comment le décrire, c'est le genre de chose qui est en fait Ce n'est pas difficile si vous dites que c'est difficile, mais c'est aussi assez dégoûtant, et il existe divers problèmes causés par l'environnement natif de Mac et certains fichiers ne se chargent pas automatiquement.

2. De plus, il y a vraiment très peu d'informations sur cette question, alors enregistrez-la.


Environnement natif


et Xcode n'est pas installé.
La version locale est livrée avec PHP version 7.3
L'outil de configuration de l'environnement local utilise MxSrvs, une version Mac de l'environnement de développement PHP. Site officiel de l'outil : http://www.xsrvs.com/ Bien que l'outil soit petit, il possède tous les éléments essentiels et est tout à fait suffisant pour le développement.

Problèmes clés

1. Le fichier d'en-tête PHP est introuvable

2. Le fichier d'en-tête Openssl est introuvable (le message d'erreur est similaire à celui de PHP)

Travail de préparation

Exigences officielles du site Web

Encore une chose à dire ici, bien que le responsable n'indique pas combien de versions ou supérieures d'autoconf sont requises, 2.68 et supérieures sont requises lors de la compilation et de l'installation.

Téléchargez le package de code source depuis GitAdresse de téléchargement, ce que j'ai téléchargé est

Processus d'installation

Parce qu'il est local, j'ai mis le package téléchargé directement dans le répertoire de la console sans écrire le répertoire du CD précédent ou autre, puis j'ai exécuté le code suivant, car je veux le compiler dans la version PHP de l'outil, donc Le phpzie fourni par l'outil est utilisé.

/Applications/MxSrvs/bin/php/bin/phpize./configure \--enable-openssl \--enable-http2  \make && sudo make install

Comme prévu, j'ai rencontré le problème 1. Ni Baidu ni Bing n'ont trouvé quoi que ce soit lié à ce problème. Ensuite, j'ai demandé à des amis du groupe, et certaines personnes ont dit que c'était parce que la version était trop élevée. de Swoole est la version 7.2.

Au final, la réponse qui a souligné l'essence de la question m'a inspiré. La réponse générale est qu'à partir de macOS 10.10 et des versions ultérieures, la version PHP fournie avec Mac a annulé certains dossiers, cela. c'est-à-dire que puisque Le PHP fourni avec ne possède pas les fichiers nécessaires à la compilation et à l'installation .

Si vous connaissez la raison, c'est en fait facile à résoudre. Après tout, peu de nos développeurs utilisent leur propre environnement, il suffit donc de réfléchir à la manière d'ajouter dynamiquement la version PHP utilisée par l'outil à l'outil. variable d'environnement système. Depuis que j'ai déjà défini le chemin de la variable d'environnement système et que j'ai une petite impression, j'ai compris comment définir la variable d'environnement.
En fait, vous définissez les variables d'environnement via .bash_profile

Cependant, après le redémarrage, vous devez saisir

source ~/.bash_profile

sur la ligne de commande à chaque fois pour que cela prenne effet, ce qui est plus pratique. Problème, nous pouvons utiliser le mécanisme de Mac pour charger automatiquement les fichiers .zshrc et ajouter

source ~/.bash_profile

à la fin du fichier afin qu'une saisie manuelle ne soit pas requise à chaque fois. Pour atteindre l’objectif de définition dynamique des variables d’environnement.

À ce stade, le premier problème est résolu.

J'ai continué la deuxième installation, puis le deuxième problème est survenu. La résolution de ce problème est plus compliquée.
En fait, les problèmes rencontrés sont essentiellement les mêmes. Ils sont tous dus au fait que le logiciel fourni avec Mac n'a pas ce fichier d'en-tête .h, donc ces problèmes surviennent en se liant à l'outil Variables. est un moyen astucieux de modifier les variables d'environnement. Logiquement parlant, cette extension d'openssl est utilisée dans de nombreux endroits, elle est donc installée dans l'environnement global de votre propre machine.
Avant d'installer openssl, vous devez d'abord installer Xcode. Je n'ai pas sauté cette étape. Il semble que de nombreuses variables d'environnement sur Mac soient liées au répertoire de fichiers Xcode, mais cela ne peut pas être ignoré. , nous installons ensuite openssl, entrez

brew install openssl


sur la ligne de commande S'il est détecté que le vôtre existe déjà, vous serez invité à réinstaller et à exécuter

.
brew reinstall openssl@1.1


其中有一句,就是让把这个添加到

If you need to have openssl@1.1 first in your PATH run:  echo 'export PATH="/usr/local/opt/openssl@1.1/bin:$PATH"' >> ~/.zshrc

把这个也添加之前修改过的 .zshrc 文件即可。
接下来就是重头戏了。说白了就是简单的粘贴复制,把 openssl 的文件夹,路径为

/usr/local/Cellar/openssl@1.1/1.1.1h/include/openssl

复制到

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/

目录下即可
至此,第二个问题解决。

然后再运行编译 Swoole ,等待编译完成就可以了

成果


打完收工!

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn