【问题标题】:Laravel, how to manually install package without composerLaravel,如何在没有作曲家的情况下手动安装包
【发布时间】:2018-01-15 21:36:36
【问题描述】:

想在没有 composer 的情况下手动安装 Laravel-Excel (Maatwebsite) 包,但我不知道如何。

为什么?因为我在其他人设置的免费托管服务器中有一个 laravel 项目,我只能使用 Filezilla 来编辑/下载/上传代码。

如果只有 Filezilla 允许使用“composer update”的命令提示符,那就更容易了。

【问题讨论】:

  • 在您的本地计算机上安装 composer 并将包括供应商文件夹在内的所有内容上传到您的主机。
  • 问题是,我不允许这样做
  • 允许做什么?你不能在你现在的电脑上运行 composer?
  • laravel 项目是服务器内部的所有内容,我在本地没有。而且我不允许下载服务器中的所有内容并重新上传整个内容

标签: php laravel composer-php filezilla


【解决方案1】:
  1. 将包添加到供应商文件夹。您可以使用 filezilla 上传它
  2. 在\vendor\composer\autoload_namespaces.php 中添加引用
  3. 在\vendor\composer\autoload_psr4.php 中添加引用

来源laravel.io

【讨论】:

  • 不需要运行 php artisan vendor:publish in laravel?
【解决方案2】:

我得到了解决方案! 由于网络安全,我无法在我的公司使用 composer。但我可以从 github 下载 zip 格式并手动安装。下面是我的 HTMLPurifier 示例:

  1. 下载并解压库mews/purifier到供应商目录https://github.com/mewebstudio/Purifier
  2. vendor/composer/autoload_psr4.php 中添加以下行

这句话会从 vendor/mews/purifier/src 加载所有文件,并在命名空间 Mews\Purifier\ 中自动加载

'Mews\\Purifier\\' => array($vendorDir . '/mews/purifier/src'),

有时您需要将库添加到 autoload_namespaces.php 中,请阅读 https://getcomposer.org/doc/04-schema.md#autoload

如果在完成第 3 步之前进行公共配置,则找不到 Mews\Purifier\Facades\Purifier

$ php artisan vendor:publish --provider="Mews\Purifier\PurifierServiceProvider"

  1. vendor/composer/installed.json中的json下面添加

这对于作曲家历史,providersaliases 将被加载到 config/app/php 以注册新的提供者

{
    "name": "mews/purifier",
    "version": "v2.0.12",
    "type": "library",
    "extra": {
        "laravel": {
            "providers": [
                "Mews\\Purifier\\PurifierServiceProvider"
            ],
            "aliases": {
                "Purifier": "Mews\\Purifier\\Facades\\Purifier"
            }
        }
    },
    "autoload": {
        "psr-4": {
            "Mews\\Purifier\\": "src/"
        }
    }
},

现在你运行这个配置,然后 vendor/mews/purifier/config 将被移动到配置文件夹

$ php artisan vendor:publish --provider="Mews\Purifier\PurifierServiceProvider"

【讨论】:

    【解决方案3】:

    在本地下载包,然后将包文件夹(在供应商下找到)连同更新的 composer.json 一起上传

    【讨论】:

    • 我昨天试过你的方法。下载包,取vendor中的maatwebsite文件夹,编辑config/app,编辑composer.json,但报错
    • 类 'Maatwebsite\Excel\ExcelServiceProvider' 未找到。我已经将 Maatwebsite\Excel\ExcelServiceProvider::class, 放在 config/app 中的提供者和 'Excel' => Maatwebsite\Excel\Facades\Excel::class, 别名中。而且我已经上传了供应商文件
    • 当前安装的所有软件包是否都正常工作,或者它们都抛出相同的错误?
    • 当前安装的所有其他包都运行良好,只是这个 Laravel/Excel 包没有
    • 我认为您需要在本地计算机上运行 compose dump-autoload 并重新上传整个供应商文件夹
    【解决方案4】:

    按照这个很容易做到 下载包并设置app文件夹中的文件

    YourProject/app/Laravel-Excel/
    

    然后在autoload中添加composer.json的路径

    "autoload": {
        ...
        "classmap": [
            "database/seeds",
            "database/factories"
            "app/Laravel-Excel"
        ],
        ...
    },
    

    运行composer dump-autoload

    解决方案参考这个问题referance answer

    【讨论】:

      【解决方案5】:

      根据服务器的严格程度,您可以通过 SSH 连接到您的服务器。但是在本地执行然后上传所需的文件通常是要走的路。

      如果您不清除缓存,您可能需要运行 composer autodump。

      【讨论】:

      • laravel 项目是服务器内部的所有内容,我在本地没有。而且我不允许下载服务器中的所有内容并重新上传整个内容,如何手动完成?
      • @begineeeerrrr 如果你在本地没有它,你可以创建一个新的 laravel 项目,然后 composer 安装你想要的包。在供应商文件中找到它并将其上传到站点。编辑所需的实时配置/应用程序,使其链接到其 ServiceProvider 和 Facades,然后重新上传。如果仍然出现错误,则需要 composer dumpautoload。如果可以的话,您应该在本地拥有整个项目并使用 XAMPP 或使用虚拟主机的类似工具工作。更高的生产力。
      • 产生错误类 'Maatwebsite\Excel\ExcelServiceProvider' 未找到,完全按照你说的做。在这里我做了一个新的 laravel 项目文件,安装 Laravel/Excel (Maatwebsite) 包,编辑 config/app,composer 发布。好的,到目前为止在本地完成。现在我上传供应商(maatwebsite),编辑config/app,编辑composer.json,上传excel.php到config\
      【解决方案6】:

      如果一切都在本地环境中运行,则将您的包和作曲家文件夹复制到位于供应商处的服务器

      【讨论】:

        【解决方案7】:

        上传\供应商\maat网站 复制 \vendor\maatwebsite\excel\src\config\excel.php 到 \config\excel.php

        【讨论】:

          猜你喜欢
          • 2016-07-18
          • 2015-04-13
          • 2018-10-21
          • 2018-10-03
          • 1970-01-01
          • 1970-01-01
          • 2021-10-07
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多