J'ai un petit projet réalisé dans symfony2 lorsque je tente de le construire sur mon serveur, il échoue toujours lors de la décompression de symfony. Build était OK et tout à coup le compositeur ne décompresse pas Symfony et je n'ai rien changé. J'ai essayé de construire avec Jenkins et aussi manuellement de bash avec le même résultat. Ce n'est pas un problème d'autorisations et la connexion Internet sur mon serveur est OK.
Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
- Installing symfony/symfony (v2.3.4)
Downloading: 100%
[Symfony\Component\Process\Exception\ProcessTimedOutException]
The process "unzip '/path/vendor/symfony/symfony/6116f6f3
d4125a757858954cb107e64b' -d 'vendor/composer/b2f33269' && chmod -R u+w 'vendor/composer/b2f33269'" exceeded the timeout of 300 seconds.
essayez composer update/install -o -vvv
et vérifiez si le paquet est en cours de chargement depuis le cache du compositeur.
si oui, effacez le cache du compositeur ou essayez d'ajouter -cache-dir=/dev/null
.
Pour forcer le téléchargement d'une archive au lieu de cloner des sources, utilisez l'option --prefer-dist
en combinaison avec --no-dev
.
Sinon, vous pouvez essayer d'augmenter la valeur de délai d'attente du processus du compositeur:
export COMPOSER_PROCESS_TIMEOUT=600 ( defaults to 300 )
composer config --global process-timeout 2000
Le compositeur lui-même impose une limite de temps pendant laquelle l'opération git à distance est autorisée. Un examen de la documentation Composer confirme que la variable d’environnement COMPOSER_PROCESS_TIMEOUT régit cela. La variable est définie sur une valeur par défaut de 300 (secondes), ce qui n'est apparemment pas suffisant pour une opération de clonage importante utilisant une connexion Internet lente.
Augmentez cette valeur en utilisant:
COMPOSER_PROCESS_TIMEOUT=2000 composer install
La méthode la plus simple consiste à ajouter une option de configuration au fichier composer.json, Ajouter un processus de temporisation 0, c'est tout. Cela fonctionne n'importe où.
{
.....
"scripts": {
"start": "php -S 0.0.0.0:8080 -t public public/index.php"
},
"config": {
"process-timeout":0
}
}
La suppression de la mémoire cache du compositeur a fonctionné pour moi.
rm -rf ~/.composer/cache/*
Le délai imparti au processus du composant Symfony est fixé à 60 par défaut. C'est pourquoi vous obtenez des erreurs comme celle-ci:
[Symfony\Component\Process\Exception\ProcessTimedOutException]
The process "composer update" exceeded the timeout of 60 seconds.
Solution
Définir le délai d'attente à 5 minutes ou plus
$process = new Process("composer update");
$process->setTimeout(300); // 5 minutes
$process->run();
C'est un vieux fil de discussion, mais j'ai découvert que la raison de l'expiration du délai était l'exécution d'un débogueur php (PHPStorm écoutait les connexions xdebug), ce qui a entraîné l'expiration du processus. Lorsque j'ai fermé le PHPStorm ou désactivé l'extension xdebug, aucun délai n'a été dépassé.
C'est le problème lent NFS. Le compositeur écrit le cache dans le répertoire NFS. Vous devez installer composer globalement et réécrire le chemin du cache.
Cela ne fonctionne pas:
php composer.phar install
En utilisant ceci:
composer install
Avant cette exécution, vous devez configurer le compositeur globalement. Voir ceci https://getcomposer.org/doc/00-intro.md#globally
De plus, vous devez ajouter ces lignes à votre config.json:
"config": {
"cache-dir": "/var/cache/composer"
}
Travaille pour moi.
vieux fil mais nouveau problème pour moi. Aucune solution ne fonctionnait ici lors de la tentative d'installation de google/apiclient (cela a échoué sous google/apiclient-services) sur un Ubuntu VM au sein d'un hôte Windows 10.
Après avoir remarqué que "l'exécutable antimalware" de Windows prenait beaucoup de temps lors de l'installation/mise à jour de ce composeur, j'ai désactivé la "protection en temps réel" sur la machine Windows 10, et la mise à jour/l'installation de mon composeur a fonctionné !!
J'espère que ça aide quelqu'un.