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

问题描述 投票:62回答:12

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

的确,这个错误

警告:require(vendor / autoload.php):无法打开流:第3行的C:\ xampp \ htdocs \ site_web \ send_mail.php中没有此类文件或目录

致命错误:require():在第3行的C:\ xampp \ htdocs \ site_web \ send_mail.php中打开所需的'vendor / autoload.php'(include_path ='C:\ xampp \ php \ PEAR')失败

出现在我的代码的这一行的开头:

require 'vendor/autoload.php';

所以,我想我的电脑里必须有一个/vendor/autoload.php文件(我已经安装了composer并运行了composer require phpmailer/phpmailer)。

所以,我在Windows命令行中使用:dir /s autoload.php查找了这个文件,在这里找到了一个:C:\Windows\SysWOW64\vendor\autoload.php

但对我来说,使用autoload.php没有看到syswow64文件夹,我没有看到我在这里缺少什么。

composer-php phpmailer
12个回答
135
投票

您缺少的是运行composer install,它将导入您的包并创建供应商文件夹以及自动加载脚本。

确保您的相对路径正确。例如,PHPMailer中的示例脚本位于项目根目录下的examples/中,因此从那里加载composer autoloader的正确相对路径将是../vendor/autoload.php

你在C:\Windows\SysWOW64\vendor\autoload.php找到的autoload.php可能是一个全球作曲家安装 - 你通常会把你的东西放在phpcs,phpunit,phpmd等等。

composer update不是同一个东西,可能不是你想要使用的 - 如果你的代码是用你当前的软件包版本测试的,那么运行update可能会导致破坏,这可能需要进一步的工作和测试,所以不要运行update,除非你有特殊的理由。为了进一步澄清 - 您应该只在本地运行composer update,而不是在您的服务器上运行。

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


1
投票

运行composer update。而已


1
投票

当我从git克隆项目并想第一次运行时,这个问题发生在我身上。我在目录中运行composer install并为我工作。


0
投票

在项目文件夹中,缺少供应商文件夹,因此您收到此错误:

警告:require(vendor / autoload.php):无法打开流:没有此类文件或目录

当您通过git下载项目时,项目将在没有vendor文件夹的情况下下载

您需要/vendor,因为您的所有包都在那里,包括Laravel使用的所有类。供应商目录包含您的Composer依赖项。

解决方案很简单,只需运行以下命令:

composer update --no-scripts 
composer update
  • composer update --no-scripts它将跳过composer.json文件中定义的脚本的执行。
  • composer update它会更新你在composer.json文件中指定的依赖性。

使用此命令,您将在项目中重新创建供应商文件夹,之后您的项目将开始正常工作。


-1
投票

更改php.ini上的auto_prepend_file属性

; Automatically add files before PHP document. 
;http://php.net/auto-prepend-file 
auto_prepend_file =

23
投票

如果在运行时也遇到错误

composer install

只需先运行此命令

composer dump-autoload

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


12
投票

6
投票

首先确保你已经安装了作曲家。

composer install

如果您已安装,则更新作曲家。

composer update

4
投票

适当的autoload.php配置:

A)快速回答:

您的autoload.php路径错误。即。 C:\Windows\SysWOW64\vendor\autoload.php到目前为止:您需要将其更改为:C:\Users\<Windows User Name>\vendor\autoload.php


B)示例步骤:我们将以facebook/php-graph-sdk为例;根据需要改为Package Name

  1. 安装composer.exe
  2. 打开CMD提示。 + R +类型CMD
  3. 运行此命令:composer require facebook/graph-sdk
  4. 在PHP页面中包含路径:require_once 'C:\Users\<Windows User Name>\vendor\autoload.php';
  5. 为您的包定义配置SecretsAccess Token等。
  6. 快乐的codinig。

C)进一步的细节:

在Windows上安装composer将为您的包设置此默认路径;你可以在那里找到它们并包括自动加载器路径:

C:\Users\<Windows User Name>\vendor

对于你提出的同样问题;答案是WAMP Server 64 BIT for Windows的这条路。

然后只需在PHP应用程序中更改:

require_once __DIR__ . '/vendor/autoload.php'; 

至:

require_once 'C:\Users\<Windows User Name>\vendor\autoload.php'; 

Find your windows username下的C:\Users\

在此之前,如前面B)所述,您需要运行此命令:

composer require <package name>

对于facebook php SDK例如:

composer require facebook/graph-sdk

谢谢你提出这个问题;感谢它,因为它帮助我修复了类似的问题,并结束了这个简单的教程


2
投票

我的机器中有这条路径:

C:/xampp5.0/htdocs/project-recordando-symfony/project-recordando-symfony

然后我运行composer install或/和composer update并返回此错误:

ErrorException ZipArchive::extractTo...

那个错误是因为你的路径太长了,我改为:

C:/xampp5.0/htdocs/p-symfony/*

并且工作了!


2
投票

如果您从Github克隆了您的项目或从其他地方获取了该项目,您将遇到此错误。那是因为你缺少供应商文件夹和其他文件。 vendor文件夹包含依赖于项目的包。包依赖项存储在composer.json文件中,并且在推送到Github时排除了该文件夹。

只需运行以下命令修复此错误:

composer install

然后,您将获得项目所需的所有资产。


1
投票

我能够通过删除作曲家并重新安装正确的方法来解决。这是我做的:

然后我能够让作曲家安装再次工作。在本期底部找到了我的答案:https://github.com/composer/composer/issues/5510


1
投票

首先,查看index.php中的路由

require __DIR__.'/../vendor/autoload.php';

$app = require_once __DIR__.'/../bootstrap/app.php';

在我的情况下,路线不起作用,我不得不审查目录。

© www.soinside.com 2019 - 2024. All rights reserved.