我试图从代码中运行这些命令,但在查找方法时遇到了一些麻烦。
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);
答案 0 :(得分:1)
我找到了一个有效的解决方案。您可以使用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/
答案 1 :(得分:0)
您可以运行composer global require "laravel/envoy=~1.0"
将Laravel的特使套餐带入您的项目中。有了特使,你可以写点像
@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
但是在某些时候服务器必须运行envoy run task
,这也是猜测你的问题。您可以更详细地了解您尝试实际执行的操作。
答案 2 :(得分:0)
cd / tmp
wget https://getcomposer.org/composer.phar
chmod 755 composer.phar
php composer.phar --version