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

时间:2017-05-19 22:34:47

标签: php laravel laravel-5.4

我试图从代码中运行这些命令,但在查找方法时遇到了一些麻烦。

  • 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);

3 个答案:

答案 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