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

问题描述 投票:0回答:3

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

  • 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);
php laravel laravel-5.4
3个回答
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/


0
投票

你可以运行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 ,这也猜测你的问题。您可以更详细地了解您尝试实际执行的操作。


0
投票

cd / tmp

wget envoy run task

chmod 755 composer.phar

php composer.phar --version

© www.soinside.com 2019 - 2024. All rights reserved.