J'ai essayé de mettre à jour un projet Laravel sur lequel je travaille aujourd'hui en utilisant composer update
Mais ça dépendait de Updating dependencies (including require-dev)
J'ai donc essayé des choses comme mettre à jour le compositeur, dump-autoload, mais rien ne semblait fonctionner. Ensuite, je l'ai exécuté en mode détaillé: composer update -vvv
Et je l'ai remarqué pendant la lecture de ce json:
Reading path/to/Composer/repo/https---packagist.org/provider-cordoval$hamcrest-php.json from cache
J'ai essayé de rechercher cordoval/hamcrest-php sur packagist.org et je ne l'ai pas trouvé. Ce n'est pas répertorié comme une dépendance dans mon composer.json
En cherchant dans mon dossier de fournisseur, je remarque que le package mockery/mockery
Que j'utilise nécessite hamcrest/hamcrest-php
, Mais je ne trouve rien qui fasse référence à cordoval
.
Une idée de ce qui ne va pas et comment je peux le réparer pour que je puisse faire la mise à jour?
Voici mon composer.json:
{
"name": "laravel/laravel",
"description": "The Laravel Framework.",
"keywords": ["framework", "laravel"],
"license": "MIT",
"require": {
"laravel/framework": "4.2.*",
"iron-io/iron_mq": "dev-master",
"phpunit/phpunit": "4.2.*",
"mockery/mockery": "dev-master",
"xethron/migrations-generator": "dev-master",
"mailgun/mailgun-php": "dev-master"
},
"autoload": {
"classmap": [
"app/commands",
"app/controllers",
"app/models",
"app/database/migrations",
"app/database/seeds",
"app/tests/TestCase.php"
]
},
"scripts": {
"post-install-cmd": [
"php artisan clear-compiled",
"php artisan optimize"
],
"post-update-cmd": [
"php artisan clear-compiled",
"php artisan optimize"
],
"post-create-project-cmd": [
"php artisan key:generate"
]
},
"config": {
"preferred-install": "dist"
},
"minimum-stability": "stable"
}
J'ai essayé de supprimer certains packages de mon composer.json, y compris le package "mockery/mockery". Le seul changement qu'il a fait est que Composer se bloquerait sur un fichier différent.
Après avoir quitté Composer fonctionnant comme ça pendant assez longtemps, il est finalement sorti avec une erreur telle que la suivante:
/path/to/ComposerSetup/bin/composer: line 18: 1356 Segmentation fault php "${dir}/composer.phar" $*
Je ne sais pas trop quoi faire pour ça...
Il s'avère donc que le problème venait de l'extension xdebug
de php. Après l'avoir désactivé dans mon php.ini
, composer s'est exécuté sans aucun problème.
Et juste pour noter, le blocage ne se produisait pas réellement lors de la lecture des fichiers du cache. C'était l'étape juste après où composer essayait de résoudre les dépendances. Il n'a jamais terminé cette étape et n'a jamais imprimé la sortie. C'est pourquoi, quoi que je fasse, il semble toujours être bloqué en lecture un fichier du cache.
Tout d'abord: Vérifiez le pare-feu et les connexions proxy. Si tout va bien mais composer est toujours en attente, essayez de vider le cache composer:
composer clear-cache
https://getcomposer.org/doc/03-cli.md#clear-cache
2ème option Si ces étapes ne réparent pas votre composer alors il est possible que le système n'en ait pas assez RAM mémoire disponible (j'ai rencontré ce problème et les symptômes étaient les mêmes que ceux que vous décrivez). À ce stade, vous avez deux options:
a) Augmentez la mémoire (machines virtuelles ou Docker): Votre conteneur ou VM a besoin de plus de mémoire disponible. Suivez ce guide : https://stackoverflow.com/a/44533437/351805
b) Générer un fichier d'échange (Linux): Essayez de créer un fichier d'échange pour fournir plus de mémoire: (Les commandes ci-dessus sont de compositeur tué lors de la mise à jour) )
free -m
mkdir -p /var/_swap_
cd /var/_swap_
#Here, 1M * 2000 ~= 2GB of swap memory
dd if=/dev/zero of=swapfile bs=1M count=2000
mkswap swapfile
swapon swapfile
chmod 600 swapfile
echo "/var/_swap_/swapfile none swap sw 0 0" >> /etc/fstab
#cat /proc/meminfo
free -m
Redémarrez votre système.
J'ai fait face au même problème aujourd'hui. En suivant les conseils, a désactivé xdebug, mais n'a pas aidé. Vérifié que tous les fichiers étaient présents. Redémarré mon système et cela a fonctionné.
vérifiez le chemin de [xdebug] zend_extension = "file/path" dans php.ini
Vérifiez si vous utilisez la version php minimale requise
Comparer avec la version php requise spécifiée dans le fichier composer.json
Ouverture du terminal
php -v
Vérification croisée dans le fichier composer.json, voir l'exemple ci-dessous
"require": { "php": "^7.1.3", }