当前位置: 首页 > 知识库问答 >
问题:

require(vendor/autoload.php):无法打开流

西门安宁
2023-03-14

我知道这个问题已经发布了很多次,但对我来说,这似乎是一个不同的问题。

事实上,这是一个错误

警告:require(vendor/autoload.php):无法打开流:在第3行的C:\xampp\htdocs\site\u web\send\u mail.php中没有这样的文件或目录

致命错误:require():无法在第3行的C:\xampp\htdocs\site\u web\send\u mail.php中打开所需的“vendor/autoload.php”(include_path='C:\xampp\php\PEAR')

显示在此行的“我的代码”开头:

require 'vendor/autoload.php';

所以,我猜一定有一个 /vendor/autoload.php文件在我的计算机的某个地方(我已经安装了作曲家和运行作曲家需要phpmailer/phpmailer)。

所以,我在Windows命令行中使用:dir /sautoload.php查找此文件,并在此处找到一个:C:\Windows\SysWOW64\供应商\autoload.php

但对我来说,syswow64文件夹与autoload.php没有任何关系,我看不到这里缺少什么。

共有3个答案

公良照
2023-03-14

@巴希尔几乎帮了我,但我需要:

composer update --no-scripts

我在这里找到了答案:https://laracasts.com/discuss/channels/general-discussion/fatal-error-class-illuminatefoundationapplication-not-found-in-pathtoprojectbootstrapappphp-on-line-14?page=0

漆雕伟志
2023-03-14

如果在运行时也出现错误

composer install

先运行这个命令

composer dump-autoload

此命令将清除所有编译文件及其路径。

傅朗
2023-03-14

您缺少的是运行作曲家安装,这将导入您的包并创建供应商文件夹以及自动加载脚本。

确保你的相对路径是正确的。例如,PHPMailer中的示例脚本位于项目根目录下的示例/中,因此从那里加载作曲家自动加载器的正确相对路径将是.../供应商/autoload.php

您在C:\Windows\SysWOW64\vendor\autoload.php中找到的autoload.php可能是一个全局编写器安装,您通常会在其中放置phpc、phpunit、phpmd等内容。

作曲家更新不是一回事,而且可能不是你想要使用的。如果您的代码是用当前的包版本测试的,那么运行更新可能会导致中断,这可能需要进一步的工作和测试,所以不要运行更新,除非您有特定的原因并确切理解它的含义。为了进一步澄清——你可能只应该在本地运行作曲家更新,永远不要在你的服务器上运行,因为它很可能会破坏生产中的应用程序。

我经常看到一些抱怨,人们不能使用composer,因为他们不能在自己的服务器上运行它(例如,因为它是共享的,并且他们没有shell访问权限)。在这种情况下,您仍然可以使用composer:在本地运行它(一个没有此类限制的环境),并上传它生成的本地供应商文件夹以及所有其他PHP脚本。

运行作曲家更新也执行作曲家安装,如果您当前没有供应商文件夹(如果您有一个项目的新签出,则正常),那么它将创建一个,并覆盖任何composer.lock已经拥有的文件,更新其中标记的包版本,这是潜在的危险。

类似地,如果您当前没有composer.lock文件(例如,如果它没有提交给项目),那么作曲家安装也有效地执行作曲家更新。因此,理解两者之间的区别是至关重要的,因为它们绝对不能互换。

也可以通过命名来更新单个包,例如:

composer update ramsey/uuid

这将重新解析composer.json中指定的版本,并将其安装到供应商文件夹中,并更新composer.lock文件以匹配。如果您只需要对一个软件包进行特定的更新,那么与常规的composer更新相比,这导致问题的可能性要小得多。

库不包含自己的composer.lock文件是正常的;修复版本取决于应用程序,而不是它们使用的库。因此,库开发人员需要保持与比应用程序开发人员所需范围更广的主机环境的兼容性。例如,库可能与Laravel5、6、7和8兼容,但使用它的应用程序可能出于其他原因需要Laravel8。

作曲家2.0消除了安装和更新结果之间的任何剩余不一致;如果您正在运行作曲家1. x,您绝对应该升级。

 类似资料:
  • 问题内容: 我最近通过作曲家安装了Laravel 5。我尝试使用artisan创建新的控制器,但出现以下错误: bootstrap /../ vendor / autoload.php。无法打开流:没有这样的文件或目录。“供应商”文件夹不存在。 我想念什么吗? 问题答案: 原来我没有在php.ini中启用openssl,所以当我用composer创建新项目时,它是从源代码安装的。我改变了并跑了 现

  • 我有一个git存储库,它是一个简单的cakephp3应用程序。(我不能分享,因为那是私人的)。我分叉了存储库并将其克隆到本地目录,但当我打开url时,会出现以下错误: 我也安装了作曲家,是可识别的。我正在使用git bash。 同一存储库在另一台计算机上运行正常。 任何帮助都将不胜感激。 更新:我已经尝试了这种方式:我安装cakephp3使用作曲家,它仍然给我同样的错误。 我也试过这个,但运气不好

  • 我最近通过composer安装了Laravel 5。我尝试使用artisan创建新控制器,但出现以下错误: bootstrap/./vendor/autoload.php。无法打开流:没有这样的文件或目录。“供应商”文件夹不存在。 我错过什么了吗?

  • 我试图用命令,但它给出了以下错误: PHP警告:require(C:\xampp\htdocs\acme\bin/。/vendor/autoload.PHP):无法打开流:第16行的C:\xampp\htdocs\acme\bin\console中没有这样的文件或目录 警告:要求(C:\xampp\htdocs\acme\bin/.../供应商/autoload.php):无法打开流:第16行的C

  • 我想启动一个Laravel应用程序,但在运行时,它找不到.env文件。它也没有创造一个。 我认为这是一个路径url问题,因为路径url中提供了斜杠和反斜杠。 以下是输出: 给出错误: file_get_contents(C:\xampp\htdocs\tekom-web/. env):无法打开流:没有这样的文件或目录 脚本php artisan key:generate处理返回的安装后cmd事件,

  • 我把Visual Studio从社区2015升级到了社区2017。现在,当我编译时,我得到错误消息,说“Error (active) E1696无法打开源文件“stdio.h”,引用的行如下所示: 如果我创建一个新项目,则会找到 stdio.h。 因此,我查看了项目配置属性- 所以似乎需要设置VC_IncludePath,但我找不到任何设置的地方。请注意,我找不到宏的,这可能是因为我使用的是 Vi