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


130

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

确实,这个错误

警告: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)。

于是,我找了这个文件中使用:dir /s autoload.php在Windows命令行,发现这里什么人C:\Windows\SysWOW64\vendor\autoload.php

但是对我来说,syswow64文件夹与autoload.php无关,我看不到这里缺少的内容。


如果您在预安装脚本部分的composer.json文件中有php artisan上或下有php artisan,也会发生这种情况。似乎需要供应商文件夹中的文件才能执行维护模式,该模式尚不可用。
托马斯(Thomas)

Answers:


232

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

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

您发现的autoload.php C:\Windows\SysWOW64\vendor\autoload.php可能是全局作曲家安装-您通常会在其中放置phpcs,phpunit,phpmd等内容。

composer update一样的,也许不是你想要使用。如果您的代码已使用当前的软件包版本进行了测试,则运行update可能会导致破损,可能需要进一步的工作和测试,因此,update除非您有特定的理由并确切理解其含义,否则请不要运行。为了进一步说明-您可能应该只在composer update本地运行,而不应该在服务器上运行,因为它很可能会破坏生产中的应用程序。

我经常看到有人抱怨人们不能使用作曲家,因为他们不能在服务器上运行它(例如,因为它是共享的并且没有外壳访问权限)。那样的话仍然可以使用composer:在本地运行(没有这种限制的环境),然后上载它与所有其他PHP脚本一起生成的本地供应商文件夹。

运行composer update 还会执行composer install,如果您当前没有vendor文件夹(例如,您有一个新的项目签出项目),则可以composer install有效地执行composer update,但是了解两者之间的区别绝对是至关重要的,因为它们绝对不可互换。

请注意,也可以通过命名单个软件包来更新它,例如:

composer update ramsey/uuid

这将重新解析您指定的版本 composer.json并将其安装在您的供应商文件夹中,并更新您的composer.lock文件以使其匹配。composer update如果只需要对一个软件包进行特定的更新,则与一般的问题相比,它引起问题的可能性要小得多。

Composer 2.0(即将推出)应消除安装和更新结果之间的所有剩余不一致之处。


1
如何运行作曲家安装?这不是公认的命令
伊冯Aburrow

谢谢,发现并下载了它-但它询问我在本地安装PHP的位置。我真的不想在本地安装PHP(或Composer),而只是想在我的Google Cloud应用程序上运行它。
伊冯娜·阿布罗

我在这里按照此文档中的步骤操作:github.com/googlecloudplatform/google-cloud-php
Yvonne Aburrow

1
用于PHP的Google云提供了composer来安装其依赖项,您只需对其进行设置即可,请参见此处:cloud.google.com/appengine/docs/flexible/php/…–
Synchro

2
是的,google cloud将需要运行composer install,然后它将读取composer.json文件的内容并将所有依赖项安装到该vendor文件夹中。如果不这样做,我只能建议阅读我指向的文档并仔细检查所有内容。这实际上是“上载”和“部署”之间的区别。
同步

39

如果在运行时也收到错误

composer install

只需先运行此命令

composer dump-autoload

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



9

首先,请确保您已经安装了作曲家。

composer install

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

composer update

1
该答案需要认真编辑才能对用户有所帮助。请清楚说明您的建议,并提供在这种情况下有用的代码示例。
Stefan Crain,

8

正确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将为您的pacakges设置此默认路径。您可以在此处找到它们并包含自动加载器路径:

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

对于您问的相同问题;答案是Windows的WAMP Server 64 BIT的路径。

然后只需在您的PHP应用程序中更改此内容:

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

至:

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

寻找你的Windows用户名之下C:\Users\

在这之前,如B)中之前指出的,您需要运行以下命令:

composer require <package name>

以facebook php SDK为例:

composer require facebook/graph-sdk

感谢您提出这个问题;非常感谢,因为它可以帮助我解决类似的问题,并结束了本简单教程的编写。


5

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

只需运行以下命令即可解决此错误:

composer install

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



2

我的机器上有以下路径:

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

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

ErrorException ZipArchive::extractTo...

该错误是因为您的路径太长,我更改为:

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

和工作!


1

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

然后,我能够重新安装作曲家。在此问题的底部找到了我的答案:https : //github.com/composer/composer/issues/5510


1

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

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

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

在我的情况下,该路由不起作用,我不得不查看目录。


1

在项目文件夹中,缺少供应商文件夹,因此出现以下错误:

警告:require(vendor / autoload.php):无法打开流:在目录中没有这样的文件或目录

当您通过git下载项目时,下载的项目没有供应商文件夹

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

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

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

使用此命令,您将在项目中重新创建vendor文件夹,然后项目将开始正常工作。


0

如果您有克隆的存储库并尝试设置该时间,则将在根目录中存在一个名为“ vendor”的目录,并尝试设置该时间。

“ .gitingore”文件已编写了不包含GIT上供应商目录的代码,因此在克隆GIT之后,您的项目将面临缺少供应商目录的问题。

添加供应商目录后,您的项目将再次开始工作。


0

使用必要的库创建composer.json文件,例如:

{
    "require": {
        "mpdf/mpdf": "^6.1"
    }
}

在composer.json存在的地方执行以下命令:

composer install

如果是Drupal:

使用drupal的Web根文件夹包含ex的自动加载功能:

define('DRUPAL_ROOT', getcwd());
require_once DRUPAL_ROOT . '/vendor/autoload.php';

对于其他系统:使用根文件夹变量或位置来包含autoload.php


0

对我来说,请先运行此命令

composer dump-autoload

添加供应商文件夹。

然后运行此命令

composer update --no-scripts

更新作曲家。


0

由于缺少某些文件而发生此错误,主要原因是“ Composer

在此处输入图片说明

首先在CMD中运行这些命令

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === 'e0012edf3e80b6978849f5eff0d4b4e4c79ff1609dd1e613307e16318854d24ae64f26d17af3ef0bf7cfb710ca74755a') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"

然后创建一个新项目
示例:

D:/Laravel_Projects/New_Project
laravel new New_Project

之后,启动服务器使用

php artisan serve

-1

更改php.ini上的auto_prepend_file属性

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

这与问题有什么关系?有一个可以接受的答案,还有其他解决方案
Nico Haase

我今天早上有以下错误。“警告:未知:无法打开流:第0行上的未知中没有这样的文件或目录”,因此我编写了此解决方案。
ercvs
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.