Laravel,如何在没有作曲家的情况下手动安装包

Posted

技术标签:

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

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

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

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

【问题讨论】:

在您的本地计算机上安装 composer 并将包括供应商文件夹在内的所有内容上传到您的主机。 问题是,我不允许这样做 允许做什么?你不能在你现在的电脑上运行 composer? laravel 项目是服务器内部的所有内容,我在本地没有。而且我不允许下载服务器中的所有内容并重新上传整个内容 【参考方案1】:
    将包添加到供应商文件夹。您可以使用 filezilla 上传它 在\vendor\composer\autoload_namespaces.php 中添加引用 在\vendor\composer\autoload_psr4.php 中添加引用

来源laravel.io

【讨论】:

不需要运行 php artisan vendor:publish in laravel?【参考方案2】:

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

    下载并解压库mews/purifier到供应商目录https://github.com/mewebstudio/Purifier 在 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"

    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

【讨论】:

以上是关于Laravel,如何在没有作曲家的情况下手动安装包的主要内容,如果未能解决你的问题,请参考以下文章

使用作曲家安装 Laravel 4 包

为啥作曲家包不安装

Laravel 没有安装 Laravel 发行包的 require-dev 包

如何使用作曲家安装 Laravel 4

Laravel包的作曲家需要

Laravel:创建作曲家包的最佳场所