web-dev-qa-db-fra.com

Dites au compositeur d'utiliser différent PHP Version

Je suis coincé à cela depuis quelques jours. J'utilise l'hébergement 1and1, et ils ont leurs PHP installés un peu bizarres.

Si je n'utilise que php composer.phar install, j'utilise PHP 4.4.6, ce qui est terriblement insuffisant. Cependant, je peux exécuter php5.5 composer.phar install, aller un peu plus loin, mais cela échoue toujours car quelque part dans la ligne, PHP est appelé à nouveau, mais il échoue car il utilise 4.4.6.

Existe-t-il un moyen d'indiquer à Composer d'utiliser la commande php5.5? Quelqu'un at-il réussi à configurer Composer sur un hébergement 1and1?

J'essaie de faire fonctionner Laravel (qui utilise Composer). J'ai pu le faire sur mon domaine GoDaddy, mais pas 1and1.

8
Boom

Sur xubuntu j'avais php 7.2 par défaut. Mais nécessaire d'exécuter composer avec php 5.6.

Donc cela a fonctionné pour moi:

php5.6 /usr/bin/composer
11
Darius.V

Ubuntu 18.04 cas ... cette course pour moi.

/usr/bin/php7.1 /usr/local/bin/composer update
10
Florin

Vous pouvez changer votre PATH pour écraser la version php.

PATH="/home/user/bin:$PATH"

Dans /home/user/bin (ou tout autre répertoire réellement), créez un lien symbolique nommé php vers le binaire php5.

Une autre option, utilisez un alias de shell:

alias php="/path/to/php5"
2
bernie

Moi aussi j'ai un compte d'hébergement partagé sur 1 & 1 (ionos) et voici ce que j'ai dû faire:

si vous vous connectez en tant que compte ssh racine, vous pouvez créer un ~/.bash_profile et ajouter

alias php="php7.1"
alias composer="php7.1 composer.phar"

afin que vous puissiez maintenant utiliser les commandes que vous utiliseriez normalement et cela fonctionne. (mettez composer.phar à la racine du dossier de votre projet)

Ensuite, assurez-vous que votre fichier laravel composer.lock de votre ordinateur dev se trouve dans votre dossier de projet sur 1and1 et exécutez 

composer install

En utilisant cette astuce de @tobymackenzie: sur des hôtes partagés, vous ne devez exécuter que l’installation de composer (et non la mise à jour!) À partir d’un fichier composer.lock que vous avez créé sur votre propre ordinateur. De cette façon, l'utilisation de la mémoire reste très faible.

J'ai toujours eu des problèmes STDIN avec des commandes artisan alors assurez-vous de modifier le fichier .env en

APP_ENV=local

le fait de le mettre en production génère des avertissements STDIN infinis pendant l'attente de la saisie de yes. Au moins sur mon compte, c'est le cas.

J'espère que ça aide quelqu'un.

2
harrisoftware

Essayez cette approche

ea-php72 /opt/cpanel/composer/bin/composer
0
Erich García

Ajoutez simplement le code ci-dessous à votre fichier composer.json pour définir une version différente de php.

"config": {

    "platform": {

        "php": "7.1.3"

    }

}
0
Shaig Khaligli

php5.5 composer.phar install échoue car votre composer.json lui dit d'exécuter php et non pas php5.5, éditez le fichier composer.json et remplacez les références de scripts php à php5.5. Exemple:

De:

"post-root-package-install": [
    "php -r \"copy('.env.example', '.env');\""
],

À:

"post-root-package-install": [
    "php5.5 -r \"copy('.env.example', '.env');\""
],

Même dans ce cas, 1and1 a une limite de mémoire pour l'exécution des scripts, donc php5.5 composer.phar install n'échouera pas mais son exécution ne sera pas terminée non plus. Vous pouvez toujours exécuter les scripts après l'installation manuellement.

J'ai déployé Laravel webapps sur 1and1 sans le répertoire commit vendor, en suivant ce guide: Déployez Laravel Webapp sur 1and1

0
Carlo Rodríguez

Vous pouvez essayer de copier les fichiers php et php-config dans/usr/local/bin à la place. Ce chemin a un ordre de priorité plus élevé et doit remplacer le dossier/usr/bin sans avoir à désactiver SIP. C'est ce que j'ai fait.

0
Dave