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

时间:2016-12-18 14:33:51

标签: composer-php phpmailer

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

确实,这个错误

  

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

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

但是对我来说, syswow64 文件夹中没有任何内容可以看 autoload.php ,我看不到我在这里缺少的内容。

18 个答案:

答案 0 :(得分:116)

您缺少的是运行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 :(得分:20)

如果您在运行

时也遇到错误
composer install

首先运行此命令

composer dump-autoload

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

答案 2 :(得分:11)

答案 3 :(得分:5)

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

composer install

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

composer update

答案 4 :(得分:3)

正确的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 + type CMD
  3. 运行此命令:composer require facebook/graph-sdk
  4. 在您的PHP页面中包含路径:require_once 'C:\Users\<Windows User Name>\vendor\autoload.php';
  5. 为您的包定义配置SecretsAccess Token等。
  6. Happy codinig。
  7. C)更多详情:

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

    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'; 
    
    C:\Users\

    下的

    Find your windows username

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

    composer require <package name>
    

    for facebook php SDK例如:

    composer require facebook/graph-sdk
    

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

答案 5 :(得分:2)

我的机器中有这条路径:

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

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

ErrorException ZipArchive::extractTo...

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

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

并且工作了!

答案 6 :(得分:2)

如果您从Github克隆了项目或从其他地方获得了项目,则将遇到此错误。那是因为您缺少供应商文件夹和其他文件。 供应商文件夹包含与您的项目相关的软件包。程序包相关性存储在composer.json文件中,并且在推送到Github 排除了该文件夹

只需运行即可解决此错误:

composer install

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

答案 7 :(得分:1)

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

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

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

在我的情况下,该路由无效,我不得不查看目录。

答案 8 :(得分:1)

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

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

答案 9 :(得分:0)

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

答案 10 :(得分: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文件中指定的依赖关系。

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

答案 11 :(得分:0)

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

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

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

答案 12 :(得分:0)

使用ex的必需库创建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

答案 13 :(得分:0)

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

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');"

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

D:/Laravel_Projects/New_Project
laravel new New_Project

之后,使用

启动服务器
php artisan serve

答案 14 :(得分:-1)

更改php.ini

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

答案 15 :(得分:-1)

运行composer update。那是

答案 16 :(得分:-1)

对我来说 只需先运行此命令

composer dump-autoload

添加供应商文件夹。

然后运行此命令

composer update --no-scripts

更新作曲家。

答案 17 :(得分:-1)

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

  1. 导航到 GitHub 的个人访问令牌页面。
  2. 点击“生成新令牌”按钮。
  3. 输入一些有意义的“Note”,选择“repo”作为范围,然后点击“Generate token”按钮。
  4. 记下令牌。

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

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

在终端 composer install 中运行

相关问题