composer installieren mit PHP-CLI

  • Hallo Zusammen,


    irgendwie schaffe ich es nicht den composer für einen Hostingplatz zum laufen zu bekommen.

    Kann mir da jemand einen Tipp geben oder mir auf die sprünge helfen...

    Das war die Anleitung die ich für das Bin-Verzeichnis im PD-Admin-Customer und dem Home des Kunden angepasst habe, aber irgendwie läuft es nicht.


    php -d allow_url_fopen=On -r "readfile('https://getcomposer.org/installer');" > composer-setup.php
    2php -d allow_url_fopen=On composer-setup.php
    3php -r "unlink('composer-setup.php');"
    4echo alias composer=\"/usr/bin/php -d allow_url_fopen=On /usr/home/$USER/composer.phar\" >> ~/.bashrc
    5source ~/.bashrc
    schonmal danke falls mir jemand das rumfummeln abkürzen kann.

    Manfred

  • Ich finde /usr/home etwas verwirrend.


    Ich habe über pd-admin die PHP-CLI konfiguriert und allow_url_fopen auf "On" gesetzt. Anschließend dann in Home-Verzeichnis

    Bash
    curl https://getcomposer.org/installer > composer-setup.php
    php composer-setup.php --install-dir=bin --filename=composer

    ausführen. Das war es dann auch schon.

  • das mit dem usr/home ist wohl irgend eine andere linux distribution.

    aber das von dir schaut besser aus und einleuchtender.


    Das im Homeverzeichnis führst du als benutzer des accounts aus oder als root?

    Eigentlich wollte ich meinen usern keinen bash zugang geben, aber das muss ich wohl dann.

    Mein Problem ist das man mit der bash bis auf die System-root gehen kann und am system ggf. rumfummeln kann. oder ich muss die sshd anders konfigurieren das man aus dem home-verzeichnis nicht ausbrechen kann.

  • Ich führe dies mit dem jeweiligen Benutzer aus.


    Man kann dies sicherlich auch global installieren. Finde das dann aber Tricky, wenn einzelne Nutzer unterschiedliche PHP Version nutzen. Das kann dann Probleme geben.


    Was ist das denn für ein System, wo andere Nutzer außerhalb ihres Home-Verzeichnis Dinge ändern können? Das sollte eigentlich nicht so sein...

  • Erstmal vielen vielen Dank für den positiven Input. Das Forum hier ist immer wieder super. Eines der besten die ich je genutzt habe.


    Konkret in diesem Fall ist es ein centos8.

    Wenn ich per putty mich mit dem systemnutzeraccount des kunden anmelde kann ich mit cd .. bis auf die Systemroot zurück. Zwar fehlen die Rechte dort was zu ändern, aber man kann rumschnüffeln. Aber evtl. fehlt wirklich eine einstellung in der sshd.conf um dies für User zu begrenzen.


    Mit dem Userabhängigen Composer finde ich auch besser ich will saubere Systeme haben und auf seinem Hostingaccount kann jeder tun und lassen was er will.

    • Offizieller Beitrag

    Dass mit dem composer ein Tool das nur per ssh ordentlich bedient werden kann der neue defacto Standard in der PHP Web Entwicklung entstanden ist, nervt total. Zumal mir keine Möglichkeit bekannt ist um wirklich effektiv zu verhindern dass der User dann im Dateisystem herumschnüffelt. Die diversen Jailroot Ansätze sind schwierig zu implementieren, schließlich braucht der User ja Zugriff auf die ganzen Programme (wie eben das php cli etc).


    Viele Webentwickler machen zum Glück das ganze composer Zeug bei sich lokal und laden es dann nur mehr hoch. Denen braucht man also im Normalfall keine Shell aufdrehen. Bei allen anderen versuche ich das für sie zu erledigen. Wie Massenhoster das handlen - keine Ahnung.

  • Da bin ich ganz bei dir. Ich werde es jetzt so machen das ich die shell aufmache um das zu installieren und dann wieder schließe. Da müssen die halt bei mir anklopfen wenn sie wieder rein wollen. Denn eigentlich will ich ja gar niemanden auf die Shell lassen.

  • Es gibt Ansätze für eine GUI wie https://getcomposercat.com/ - aber leider noch keine wirklich gut Lösung.

    Für contao gibt es den contao Manager. Das ist im Grunde auch eine Composer GUI, nur leider speziell für contao.


    Zum Thema chroot jail - das ist echt schwierig umzusetzen. Ich persönlich sehe da wenig nutzen von.

    Man kann zwar den Verzeichnisbaum hinab steigen, aber man kann z.b. als unprivilegierter Nutzer nicht auf /root oder /etc zugreifen und schon gar nicht Inhalte einsehen. Auch auf andere /home Verzeichnisse hat man kein Zugriff. Und der Standard Verzeichnisbaum unter Linux ist ja kein Staatsgeheimnis ;)


    Ein anderes Thema ist das ausnutzen von Sicherheitslücken wenn man als Nutzer eingeloggt ist, siehe aktueller Fall "Sequoia". Dagegen hilft ein chroot jail auch nicht.

  • Ja, dies geht im Prinzip genauso. Im NodeJS Archiv ist ein bin Ordner mit den Binaries. Man entpackt das Archiv einfach ins Home-Verzeichnis und erstellt dann ein symlink nach ~/bin etwa so

    Bash
    symlink -s ~/nodejs/bin/node ~/bin/node
    symlink -s ~/nodejs/bin/npm ~/bin/npm

    dann kann NodeJS genauso wie composer verwendet werden.

    Es muss auf jeden Fall darauf geachtet werden, dass $HOME/bin in PATH enthalten ist.