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下面添加
这对于作曲家历史,providers 和 aliases 将被加载到 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,如何在没有作曲家的情况下手动安装包的主要内容,如果未能解决你的问题,请参考以下文章