我正在开发一个Laravel项目并且工作正常。但
最近我通过composer update
更新了Composer,并成功更新了Composer。
然后我从vendor
文件夹中删除了不必要的包。我还从paragonie
删除了vendor
文件夹,这对我来说是不受欢迎的。
这给了我以下错误。
致命错误:require():无法打开所需' /var/www/laravel/vendor/paragonie/random_compat/lib/random.php'第54行的/var/www/laravel/vendor/composer/autoload_real.php中的(include_path ='。:/ usr / share / php:/ usr / share / pear')
我已添加此文件夹并正常工作。
任何人都可以帮我弄清楚paragonie
文件夹的目的是什么。
为什么包含它?
答案 0 :(得分:3)
Composer管理vendor/
文件夹中的每个包。你根本无法从vendor/
删除任何文件夹而不会破坏某些内容。不要这样做!
如果您要从项目中删除软件包,请编辑composer.json
并执行composer install
。
您的vendor
文件夹中可能包含composer.json
中不需要的一些软件包。这是因为包装可以满足自己的要求。如果您删除其中一个必需的包,则将其分解。
通常没有必要从vendor
删除任何内容!
注意: composer update
不会更新Composer本身。它会更新项目的每个包!要更新Composer本身,请使用composer self-update
。
我真的建议您阅读composer docs或how composer works上的一些教程,以便更好地了解作曲家。
答案 1 :(得分:2)
不要手动编辑composer.json
或vendors
文件夹的文件结构。 vendors文件夹包含依赖项及其依赖项。
最重要的部分是你不应该 EVER 编辑项目中的项目依赖项。你做的第二个,你已经打破了未来的更新, 这是一个可怕的事情 。
如果你觉得这是不可能的,因为图书馆需要改变,我建议你去吸一口气。
大多数库都有一些内置配置选项或修改库的方法。如果他们不愿意贡献一些,或者分叉图书馆。
您绝对可以对具有源代码修改许可许可的库进行更改,这就是开源代码存在的原因,但您需要以正确的方式执行此操作。
您可以通过使用源控件分叉来可能改进代码,这也可以让您提交拉取请求(PR)到包维护者。
尝试此操作的好处是 IF 软件包维护人员决定接受您的更改,即使您没有时间,也可以及时更新所有未来的更新保持你的变化,有人可能会接受并做出改变。
IF 您的公关不被接受;我强烈考虑重新审视您的初步假设,以便您可以确定您所做的决定是唯一的方式,或者是最有利的前进方式。无论哪种方式;它无关紧要,因为你可以保持你的分叉作为你未来的版本,并将它添加到packagist(只有当你真的更多的人将从中受益);或告诉作曲家直接从您的存储库拉(它必须在互联网AFAIK上)。
如果必须fork,则需要确保可以维护依赖关系,这在组织内是可接受的。如果以后您可以从原始源库中不时手动更新;确保您仍然享受核心库的好处,同时保持您的变化。
这是高中编码与专业发展之间的差异。
对不起喊叫/惊呼,但这需要更多,可能在某处100英尺的字母。
答案 2 :(得分:0)
通过以下步骤解决此问题:
从终端(CLI)
cd vendor
svn add paragonie
svn commit -m""
如果缺少另一个文件也会做同样的事情。 对我来说它100%有效。 祝你好运。