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

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

事实上,这个错误

在C:\xampp\htdocs\site_web\send_mail.php第3行中没有这样的文件或目录

致命错误:require():在C:\xampp\htdocs\site_web\send_mail.php第3行打开required '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

但对我来说,syswow64文件夹没有看到autoload.php,我没有看到我在这里遗漏了什么。

954680 次浏览

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

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

你在C:\Windows\SysWOW64\vendor\autoload.php中找到的autoload.php可能是一个全局编写器安装-你通常会在其中放置phpcs, phpunit, phpmd等东西。

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

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

运行composer update 执行composer install,如果你当前没有vendor文件夹(如果你有一个新的项目签出,这很正常),那么它会创建一个文件夹,并覆盖你已经拥有的任何composer.lock文件,更新其中标记的包版本,这是潜在的危险。

类似地,如果当前没有composer.lock文件(例如,如果它没有提交给项目),那么composer install也会有效地执行composer update。因此,理解两者之间的区别至关重要,因为它们肯定是可互换的。

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

composer update ramsey/uuid

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

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

Composer 2.0删除了安装和更新结果之间的任何剩余不一致;如果你正在运行composer 1。x你肯定应该升级

我的机器里有这样的路径:

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

然后我运行composer install或/和composer update,它返回以下错误:

ErrorException ZipArchive::extractTo...

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

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

和工作!

正确的autoload.php配置:

A)快速回答:

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


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

  1. 安装composer.exe
  2. 打开CMD提示符。< img src = " https://i.stack.imgur.com/pMPhg.png " > + 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服务器64位Windows的这个路径。

然后简单地在你的PHP应用程序更改这个:

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

:

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

C:\Users\下的找到你的windows用户名

在这一切之前,正如前面在B)中指出的,你需要运行这个命令:

composer require <package name>

为facebook的php SDK,例如:

composer require facebook/graph-sdk

谢谢你的提问;感谢它帮助我解决了类似的问题,并结束了编写这个简单的教程。

如果在运行时也得到错误

composer install

先运行这个命令

composer dump-autoload

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

composer update运行。就是这样

@Bashir几乎帮了我,但我需要:

composer update --no-scripts

显然,这可以防止在执行artisan之前包含任何脚本。

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

修改php.ini中的auto_prepend_file属性

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

首先,确保已经安装了编写器。

composer install

如果已经安装,则更新编写器。

composer update

我可以通过删除composer并以正确的方式重新安装来解决。以下是我所做的:

然后我就可以重新安装作曲器了。在这个问题的底部找到了我的答案:https://github.com/composer/composer/issues/5510

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

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


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

在我的情况下,这条路线行不通,我不得不重新查看目录。

如果你从Github克隆了你的项目,或者从其他地方得到了它,你会遇到这个错误。这是因为你缺少供应商的文件夹和其他文件。供应商的文件夹包含依赖于你的项目的包。包依赖项存储在composer.json文件中,文件夹为被排除在外推送到Github

通过简单地运行:
来修复此错误

composer install

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

在你的项目文件夹中,供应商的文件夹缺失了,所以你得到了这个错误:

提示:require(vendor/autoload.php): failed to open stream:没有这样的文件或目录

当你通过git下载这个项目时,这个项目是在没有供应商的文件夹 . 0的情况下下载的

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

解决方法很简单,运行这个命令< em >: < / em >

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

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

如果您有一个克隆的存储库,并试图在发生这种类型的错误时进行设置,那么根目录中将需要一个名为“vendor”的目录。

".gitingore"文件已经写了代码,不包括供应商目录在GIT上,所以克隆GIT后,你的项目面临的问题是缺少供应商目录。

添加供应商目录后,项目将重新开始工作。

创建作曲家。Json文件,包含ex所需的库:

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

在composer. where执行以下命令。json:

composer install

以Drupal为例:

使用drupal的web根文件夹来包含自动加载ex:

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

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

.php
< p >给我 只要先运行这个命令

composer dump-autoload

添加供应商文件夹。

然后执行以下命令

composer update --no-scripts

更新编写器。

发生此错误是因为缺少一些文件,主要原因是"作曲家"

enter image description here

首先在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');"
< p >然后 创建一个新项目
例子:< / p >
D:/Laravel_Projects/New_Project
laravel new New_Project

之后,启动服务器使用

php artisan serve

在linux中首先添加github个人访问令牌

  1. 导航到GitHub的个人访问令牌页面。
  2. 点击“生成新标记”;按钮。
  3. 输入一些有意义的东西“note”,选择“repo”;作为范围并点击“;生成标记”;按钮。
  4. 记下这个标记。

5 .在终端输入新的“个人访问令牌”;

export COMPOSER_AUTH='{"github-oauth":{"github.com":"AB8cd4cab23a9d5399934a7d7698d3fa74e9cfAB"}}'

在终端composer install中运行

使用这个require_once __DIR__ ."/vendor/autoload.php";而不是这个require 'vendor/autoload.php';

__DIR__表示当前路径

在我的情况下,这是由于没有完全安装项目,因为我没有足够的空间在我的硬盘上