Laravel,如何在没有使用Composer的情况下手动安装软件包

19

想要在没有使用 composer 的情况下手动安装 Laravel-Excel(Maatwebsite)包,但我不知道该怎么做。

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

如果 Filezilla 能够允许一个命令提示符,那就更方便了,可以使用 "composer update" 命令。


在本地机器上运行composer install,然后将包括vendor文件夹在内的所有内容上传到您的托管服务。 - Jonnix
问题是,我不被允许这样做。 - begineeeerrrr
允许做什么?你现在所用的电脑无法运行Composer吗? - Jonnix
Laravel项目是服务器内的所有内容,我没有本地副本。而且我不被允许下载服务器上的所有内容并重新上传整个项目。 - begineeeerrrr
7个回答

17

我找到了解决方案!由于网络安全问题,我无法在公司使用Composer,但我可以从Github下载zip文件并手动安装。以下是我对HTMLPurifier的示例:

  1. 下载并提取库 mews/purifier 到 vendor 目录 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

如果在完成第三步之前发布公共配置,则会出现Mews\Purifier\Facades\Purifier未找到的错误。

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

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

这是为了Composer历史记录,提供者别名将在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将被移动到config文件夹中。

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


在运行vendor:publish自动加载包之前,您需要先运行composer du。 - Kashif Saleem

14
  1. 将包添加到 vendor 文件夹中。您可以使用 filezilla 上传它。
  2. 在 \vendor\composer\autoload_namespaces.php 中添加一个引用。
  3. 在 \vendor\composer\autoload_psr4.php 中添加一个引用。

来源 laravel.io


不需要在Laravel中运行php artisan vendor:publish吗? - saber tabatabaee yazdi

2

按照以下步骤操作,这很容易做到:

下载软件包并将文件设置在应用程序文件夹中。

YourProject/app/Laravel-Excel/

然后在autoload中将路径添加到composer.json文件中。

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

运行 composer dump-autoload 命令。该解决方案参考自此问题的答案:参考答案

1
下载软件包到本地,然后上传软件包文件夹(位于vendor目录下),同时更新composer.json。

类'Maatwebsite\Excel\ExcelServiceProvider'未找到。我已经在config/app的提供程序(providers)中添加了Maatwebsite\Excel\ExcelServiceProvider::class,并在别名(aliases)中添加了'Excel' => Maatwebsite\Excel\Facades\Excel::class。而且,我已经上传了vendor文件夹。 - begineeeerrrr
目前安装的所有软件包是否都正常工作,还是它们都出现了相同的错误? - Ali
目前安装的所有其他软件包都很完美运行,只有这个 Laravel/Excel 软件包不行。 - begineeeerrrr
产生错误:找不到类'Maatwebsite\Excel\ExcelServiceProvider',我已经按照您的指示做了。这是我所做的:我创建了一个新的Laravel项目文件,安装了Laravel/Excel(Maatwebsite)包,编辑了config/app,然后使用composer发布。目前为止,在本地完成得很好。现在我上传了vendor(maatwebsite),编辑了config/app,编辑了composer.json,并将excel.php上传到config\目录下。 - begineeeerrrr
嘿,Ali,你在贝鲁特地区吗? - abbood
显示剩余2条评论

0
如果本地环境一切正常,那么将您的包和composer文件夹复制到位于vendor下的服务器即可。

0
根据服务器的限制程度,您可以通过SSH连接到您的服务器。但通常情况下,最好是在本地完成,然后上传所需的文件。
如果您不清除缓存,可能需要运行composer autodump命令。

Laravel项目是服务器上的所有内容,我本地没有它。而且我不被允许下载服务器上的所有内容然后重新上传整个项目,那么如何手动操作呢? - begineeeerrrr
如果您没有本地安装,可以创建一个新的Laravel项目并使用Composer安装所需的包。在vendor文件中找到它并将其上传到网站。编辑所需的live config/app,以便其链接到其ServiceProvider和Facades,然后重新上传。如果仍然出现错误,则需要运行composer dumpautoload。如果可能的话,最好将整个项目放在本地,并使用XAMPP或类似工具使用虚拟主机进行开发。这样可以提高生产力。 - connormcwood
产生错误 Class 'Maatwebsite\Excel\ExcelServiceProvider' 找不到,已经按照您的指示完成。以下是我所做的:我创建了一个新的 Laravel 项目文件,安装了 Laravel/Excel (Maatwebsite) 包,在 config/app 中进行了编辑,使用 composer 命令进行了发布。目前为止在本地运行良好。现在,我上传了 vendor(maatwebsite),并在 config/app 和 composer.json 中进行了编辑,同时将 excel.php 上传到 config 文件夹中。 - begineeeerrrr

-3

上传 \vendor\maatwebsite 将 \vendor\maatwebsite\excel\src\config\excel.php 复制到 \config\excel.php


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接