我正在尝试从代码中运行这些命令,但在查找方法时遇到了一些麻烦。
php composer.phar dump-autoload -o
php composer.phar require 'vendor/some-package'
php composer.phar update 'vendor/some-package'
编辑
忘了提一下,我不想使用exec函数,因为潜在的风险以及默认情况下在大多数服务器上被阻止的事实。
我确实设法从代码中下载.phar文件,但不是如何运行这些命令。我正在尝试构建一个友好的尽可能的解决方案,并且不希望在安装某些东西之后手动使用dumpautoload。
代码下载
$composerPath = base_path('composer.phar');
copy('https://getcomposer.org/composer.phar', $composerPath);
我找到了一个有效的解决方案您可以使用Symphony的流程组件调用这些命令。
$process = new \Symfony\Component\Process\Process('php composer.phar autoload-dump');
$process->setWorkingDirectory(base_path());
$process->run();
把它分成了一个类:https://codeneverlied.com/using-composer-from-code/
你可以运行qazxsw poi将Laravel envoy包带入你的项目。有特使,你可以写一些类似的东西
composer global require "laravel/envoy=~1.0"
但在某些时候服务器将不得不运行@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
,这也猜测你的问题。您可以更详细地了解您尝试实际执行的操作。
cd / tmp
wget envoy run task
chmod 755 composer.phar
php composer.phar --version