web-dev-qa-db-fra.com

Comment utiliser la version de MAMP de PHP au lieu de la valeur par défaut sur OSX

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?

55
Josh Fraser

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

78
John Kramlich

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

  • Redémarrez votre Mac en mode Recovery (maintenez Cmd + R au démarrage)
  • Ouvrez le terminal et entrez: csrutil disable
  • Redémarrer
  • soit: Sudo ln -s /Applications/MAMP/bin/php/php5.4.4/bin/php /opt/local/bin/php 
    ou Sudo ln -s /Applications/MAMP/bin/php/php5.4.4/bin/php /usr/bin/php
  • Redémarrez à nouveau dans RecoveryMode et réactivez la sécurité: csrutil enable
100
Heiko K.

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.

63
Ibrahim AshShohail

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.

2
ioCron

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!

0
pgee70

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! :)

capture d'écran

0
hsaada

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.

0
StevenHill