从代码运行`php composer.phar dump-autoload` - Laravel 5.4

I'm trying to run these command from code, but having some trouble finding out how.

  • php composer.phar dump-autoload -o
  • php composer.phar require 'vendor/some-package'
  • php composer.phar update 'vendor/some-package'

EDIT

Forgot to mention, that I don't want to use the exec function because of potential risk and the fact that's blocked on most servers by default.

I did manage to download the .phar file from code, but not how to run these commands. I'm trying to build a friendly as possible solution and don't want use to dumpautoload manually after installing something etc.

Code to download

 $composerPath = base_path('composer.phar');
 copy('https://getcomposer.org/composer.phar', $composerPath);

I have found a working solution. You can call these command with Symphony's process component.

$process = new \Symfony\Component\Process\Process('php composer.phar autoload-dump');
$process->setWorkingDirectory(base_path());
$process->run();

Worked it out into a class: https://codeneverlied.com/using-composer-from-code/

you can runcomposer global require "laravel/envoy=~1.0" to bring Laravel's envoy package into your project. With envoy you can write something like

@servers(['localhost' => '127.0.0.1'])

@task('foo', ['on' => 'localhost'])
    php composer.phar dump-autoload -o
    php composer.phar require 'vendor/some-package'
    php composer.phar update 'vendor/some-package'
@endtask

but at some point the server will have to run envoy run task, this is also guessing on your question. You may more elaborate more on what you are trying to actually do.

cd /tmp

wget https://getcomposer.org/composer.phar

chmod 755 composer.phar

php composer.phar --version