Je voudrais utiliser la version de MAMP de PHP au lieu de la version par défaut installée sur mon mac. J'ai essayé d'utiliser
ln -s /Applications/MAMP/bin/php5.3/bin/php php
mais j'obtiens une erreur "le fichier existe". Quelle est la meilleure façon de contourner ce problème afin que je puisse simplement taper php au lieu du chemin complet?
Je ne recommanderais pas d'essayer de modifier la version par défaut de PHP appelée sur la ligne de commande. Cela pourrait endommager d'autres parties de votre système et vous poser des problèmes par la suite, si vous décidiez de mettre à niveau votre système d'exploitation.
Il existe une alternative qui peut répondre à vos besoins. Vous pouvez créer un alias pour votre copie du php 5.3 de MAMP. Dans mon cas, j'ai nommé l'alias phpmamp. Ouvrez votre terminal et tapez:
alias phpmamp='/Applications/MAMP/bin/php5.3/bin/php'
Maintenant, taper phpmamp en ligne de commande lancera l'interperter php MAMP. Vérifiez ceci en tapant:
phpmamp --help
Vous souhaiterez probablement stocker cet alias, ainsi que tout autre alias, dans un ~/.bash_profile
. Cela permettra aux alias de persister lors des redémarrages. Sinon, l'alias ne devrait durer que pour la session de terminal particulière dans laquelle vous vous trouvez. Pour plus d'informations sur la création d'un fichier .bash_profile
, cliquez ici:
http://www.redfinsolutions.com/redfin-blog/creating-bashprofile-your-mac
J'ai créé un lien symbolique à l'emplacement php d'origine.
1. Localisez votre version osx php avec:
which php
Le résultat devrait être:
/opt/local/bin/php
2. Sauvegardez (déplacez) votre binaire php d'origine:
Sudo mv /opt/local/bin/php /opt/local/bin/php.bak
3. Créez le lien symbolique:
Sudo ln -s /Applications/MAMP/bin/php/php5.4.4/bin/php /opt/local/bin/php
4. Lancez votre nouvelle version php:
php -v
PS:
Pour que cela fonctionne sur El-Capitan
csrutil disable
Sudo ln -s /Applications/MAMP/bin/php/php5.4.4/bin/php /opt/local/bin/php
Sudo ln -s /Applications/MAMP/bin/php/php5.4.4/bin/php /usr/bin/php
csrutil enable
Je préfère ne pas altérer les fichiers actuels, aussi je préfixe le dossier bin MAMP PHP à la variable $PATH
env.
Vous pouvez éditer ~/.bash_profile
et ajouter la ligne suivante en haut
export PATH="/Applications/MAMP/bin/php/php5.6.1/bin:$PATH"
Il suffit de changer la version PHP à la version actuelle que vous utilisez.
N'oubliez pas de faire source ~/.bash_profile
après avoir édité le fichier.
Je n’étais pas satisfait des résultats/solutions que j’ai trouvés sur le net jusqu’à présent, car les configurations de php.ini n’étaient pas chargées correctement dans tous les cas et sur tous les systèmes, surtout lorsque vous avez besoin de modules comme encore plus déroutant sur MAMP Pro). C'est pourquoi j'ai créé mes propres alias de version php (avec configs). J'ai donc proposé la solution suivante, à titre d'exemple (basée sur MAMP Pro, n'oubliez pas de régler les chemins php.ini en fonction de vos besoins):
Editez votre .bash_profile
vim ~/.bash_profile
Et ajoutez les entrées suivantes:
alias php55="/Applications/MAMP/bin/php/php5.5.26/bin/php -c '/Library/Application Support/appsolute/MAMP PRO/conf/php5.5.26.ini'"
alias php56="/Applications/MAMP/bin/php/php5.6.10/bin/php -c '/Library/Application Support/appsolute/MAMP PRO/conf/php5.6.10.ini'"
alias php56cgi="/Applications/MAMP/bin/php/php5.6.10/bin/php-cgi -c '/Library/Application Support/appsolute/MAMP PRO/conf/php5.6.10.ini'"
Réinitialisez le fichier .bash_profile dans la session de terminal en cours (sinon, vous ne verrez aucune modification, à moins que vous ne redémarriez le terminal):
source ~/.bash_profile
Si vous avez quelques modules supplémentaires installés, vous pouvez le tester avec php56 -v et vous devriez obtenir une sortie des modules ioncube, etc. Sinon testez-le avec php56 -i | grep "yourModuleNameOrSomethingElse"
Maintenant, vous êtes en mesure d’utiliser facilement l’une des versions de PHP telles que "php56" dans votre terminal avec toutes les configurations chargées. Il est donc parfait pour tester et construire vos applications avec toutes les versions de versions, y compris la configuration correcte du fichier php.ini via le terminal.
Pour les utilisateurs normaux de MAMP, les configurations doivent être situées dans/Applications/MAMP/conf/je pense. Bonne programmation.
Eh bien, tout cela ne fonctionnait pas pour moi avec OSX10.12.5
j'ai des ports mac php70 installés dans/opt/local/bin
quel php a montré:
/usr/bin/php
J'ai mis en place les alias et les chemins locaux, etc., qui fonctionnaient principalement pour moi, mais d'autres programmes échouaient (comme composer), la solution pour moi consistait donc à préfixer:
/opt/local/bin
/opt/local/sbin
dans le fichier/etc/path
alors tout a fonctionné un charme!
La dernière version de MAMP (version 5+) offre un moyen simple de rendre la version de MAMP PHP disponible sur la ligne de commande. Sélectionnez simplement "PHP" dans le menu de la barre latérale et cochez la case "Rendre cette version disponible sur la ligne de commande". Peasy facile! :)
Eh bien, l'erreur 'file existe' est probablement due au fait que vous avez tenté de créer un lien symbolique avec le nom d'un fichier déjà présent. Je suppose que vous étiez dans le répertoire contenant la version de PHP que vous tentiez de remplacer ou qu'il s'agissait d'une deuxième tentative et que vous n'avez pas d'abord supprimé le lien symbolique existant. Je suis d'accord avec les autres en ce qui concerne ne pas "remplacer/modifier" la version par défaut de php.
Sur la base de la deuxième partie de la question, le meilleur moyen de contourner le type de chemin complet, les réponses suggérant un alias sont tout à fait justes à cet égard. Lorsque plusieurs versions sont impliquées, cela signifie toutefois que vous devez appeler autre chose que php pour exécuter la version que vous souhaitez exécuter.
J'ai un script qui me permet de "sélectionner" la version de php avec laquelle j'aimerais travailler, puis crée un lien symbolique vers cette version et me permet tout simplement d'entrer "php" comme commande lorsque je souhaite l'utiliser. J'ai écrit un blog à ce sujet ici où vous pouvez obtenir le script. Sur la base de la réponse donnée par @ioCron, il se peut que je devrais revoir mon script pour prendre en compte les différents dossiers de configuration associés à chaque version.