【问题标题】:Run `php composer.phar dump-autoload` from code - Laravel 5.4从代码运行`php composer.phar dump-autoload` - Laravel 5.4
【发布时间】:2017-10-20 03:58:43
【问题描述】:

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

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

编辑

忘了提一下,我不想使用 exec 功能,因为存在潜在风险以及大多数服务器默认被阻止的事实。

我确实设法从代码中下载了 .phar 文件,但不知道如何运行这些命令。我正在尝试构建一个尽可能友好的解决方案,并且不想在安装后使用手动转储自动加载等。

下载代码

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

【问题讨论】:

  • 不解释原因就投反对票没有用...请提供有关您投反对票的原因的信息,以便我可以调整我的问题并使其变得更好。
  • 你实际上想构建什么?

标签: php laravel laravel-5.4


【解决方案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/

【讨论】:

    【解决方案2】:

    你可以运行composer global require "laravel/envoy=~1.0" 将 Laravel 的 envoy 包引入你的项目。使用 envoy,您可以编写类似

    的内容
    @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,这也是在猜测你的问题。您可能会更详细地说明您正在尝试实际执行的操作。

    【讨论】:

      【解决方案3】:

      cd /tmp

      wgethttps://getcomposer.org/composer.phar

      chmod 755 composer.phar

      php composer.phar --version

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-09-11
        • 2013-12-14
        • 2018-09-09
        • 2018-07-17
        • 2013-06-15
        • 2021-12-22
        • 2018-10-12
        • 2014-05-05
        相关资源
        最近更新 更多