Version imprimable du sujet

Cliquez ici pour voir ce sujet dans son format original

Forums MacBidouille _ Les Langages Du Web _ Utiliser Composer sans terminal (avec un exec PHP) ?

Écrit par : toluol 4 Oct 2018, 15:30

Bonjour,

je ne suis pas qualifié dans ce domaine, mais une demande un peu bizarre laugh.gif : je cherche à ajouter/effacer une dépendance Composer depuis un script php (donc, depuis un browser et sans terminal) en local.
J'utilise normalement le terminal comme tout le monde, mais là... j'expérimente un peu ! ^^

shell_exec() me semblait tout indiqué pour cela, mais encore faudrait-il avoir accès à la commande "composer" sur le serveur local (MAMP)... et c'est là que je bloque.

Code
chdir('/Users/moi/Documents/Sites/test');
$file = fopen ("composer.json", "w");
$content =
'{
    "name": "moi/test",
    "autoload": {
        "psr-4": {
            "App\\\": "app/"
        }
    },
    "require": {'.
        "slim/slim": "^3.10",
        "slim/twig-view": "^2.4",
        "swiftmailer/swiftmailer": "^5.4",
        "respect/validation": "^1.1",
        "slim/csrf": "^0.8.3"
    '}
}';
fwrite($file,$content);
fclose($file);
shell_exec('composer install');


la commande "composer", évidemment, ne fonctionne pas.
J'ai même tenté un "shell_exec('curl -sS https://getcomposer.org/installer | php');", sans grand espoir... Ou utiliser le fichier .phar avec php composer.phar install

J'ai trouvé https://github.com/composer/composer/issues/1906. Mais comme c'est trop avancé pour moi, je n'ai pas su en tirer quoique ce soit. Pourtant, la solution semble y être. Si quelqu'un peut m'éclairer là-dessus...

merci.



Écrit par : yponomeute 5 Oct 2018, 09:38

Il faut déjà commencer par regarder si composer est bien dans le PATH utilisé par shell_exec

Donc avant toute chose vérifier le résultat de

Code
shell_exec('echo $PATH');


Si composer ne s'y trouve pas il faut remédier à ce premier problème.

Écrit par : toluol 5 Oct 2018, 10:40

je comprends un peu le principe.

Code
echo shell_exec('echo $PATH');

m'affiche :
Citation
/usr/gnu/bin:/usr/local/bin:/bin:/usr/bin:.


Sur le terminal, en revanche...
Code
echo $PATH

m'affiche :
Citation
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin


Dans le terminal, en faisant un ls dans /usr/local/bin, je trouve bien composer... En revanche, pour le site en local, je ne vois pas bien comment procéder pour vérifier... unsure.gif

Propulsé par Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)