我知道这个问题已经发布了很多次,但对我来说,这似乎是一个不同的问题。
确实,这个错误
警告:require(vendor/autoload.php):打开流失败:C:\xampp\htdocs\site_web\send_mail.php 中第 3 行没有这样的文件或目录致命错误:require():打开所需的“供应商/”失败第 3 行 C:\xampp\htdocs\site_web\send_mail.php 中的 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 无关,我看不到我在这里缺少什么。
PHP Warning: require_once(../vendor/autoload.php): Failed to open stream: No such file or directory
。两个潜在的原因:(1)错误的路径,例如到 PHP 网络服务器根目录(通过包含完整路径进行故障排除,以进行调试); (2) 您有一个格式不正确的 .env
文件,例如 servername="localhost";
(注意行尾的分号 ;
- 删除它,因为 .env
文件中的行不以分号/标点符号结尾.. .
您缺少的是运行 composer install
,它将导入您的包并创建供应商文件夹以及自动加载脚本。
确保您的相对路径正确。例如,PHPMailer 中的示例脚本位于项目根目录下的 examples/
中,因此从那里加载 composer 自动加载器的正确相对路径是 ../vendor/autoload.php
。
您在 C:\Windows\SysWOW64\vendor\autoload.php
中找到的 autoload.php 可能是一个全局 Composer 安装 - 您通常会在其中放置 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,您绝对应该upgrade。
如果您在运行时也收到错误
composer install
只需先运行此命令
composer dump-autoload
此命令将清理所有已编译的文件及其路径。
@Bashir 几乎帮助了我,但我需要:
composer update --no-scripts
显然,这可以防止在执行 artisan 之前包含任何脚本。
正确的 autoload.php 配置:
A)快速回答:
您的 autoload.php 路径错误。 IE。 C:\Windows\SysWOW64\vendor\autoload.php
迄今为止:您需要将其更改为:C:\Users\<Windows User Name>\vendor\autoload.php
B) 举例步骤:我们以facebook/php-graph-sdk为例;根据需要更改为 Package Name
。
安装 composer.exe 打开 CMD 提示。 + R + type CMD 运行这个命令:composer require facebook/graph-sdk 在你的 PHP 页面中包含路径:require_once 'C:\Users\
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>
对于 facebook php SDK 例如:
composer require facebook/graph-sdk
感谢您提出这个问题;感谢它帮助我解决了类似的问题并结束了编写这个简单的教程。
首先确保您已经安装了作曲家。
composer install
如果您已经安装,请更新作曲家。
composer update
composer update
应该解决任何问题?
如果你从 Github 克隆了你的项目或从其他地方得到它,你会遇到这个错误。那是因为您缺少 vendor 文件夹 和其他文件。 vendor 文件夹 包含依赖于您的项目的包。软件包依赖项存储在 composer.json
文件中,并且该文件夹在 推送到 Github 时被排除。
只需运行以下命令即可修复此错误:
composer install
然后,您将获得项目所需的所有资产。
首先,查看 index.php 中的路由
require __DIR__.'/../vendor/autoload.php';
$app = require_once __DIR__.'/../bootstrap/app.php';
在我的情况下,路线不起作用,我不得不查看目录。
对我来说,先运行这个命令
composer dump-autoload
添加供应商文件夹。
然后运行这个命令
composer update --no-scripts
更新作曲家。
运行 composer update
。而已
The update command reads the composer.json file from the current directory, processes it, and updates, removes or installs all the dependencies.
所以。如果你这样做,无论你在哪里(测试环境,本地,生产环境),你所有的项目依赖都可能会发生变化或删除。所以这是一个糟糕的解决方案,没有解释。否决。
我的机器上有这条路径:
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):无法打开流:没有这样的文件或目录
通过git下载项目时,下载的项目没有vendor文件夹
你需要 /vendor
因为你所有的包都在那里,包括 Laravel 使用的所有类。 vendor 目录包含您的 Composer 依赖项。
解决方案很简单,只需运行以下命令:
composer update --no-scripts
composer update
composer update --no-scripts 它将跳过 composer.json 文件中定义的脚本的执行。
composer update 它将更新您在 composer.json 文件中指定的依赖项。
使用此命令,您将在项目中重新创建供应商文件夹,之后您的项目将开始正常工作。
composer.lock
文件,最常见的命令将是 composer install
。
composer update
为 ex 创建带有必要库的 composer.json 文件:
{
"require": {
"mpdf/mpdf": "^6.1"
}
}
在 composer.json 存在的地方执行以下命令:
composer install
在 Drupal 的情况下:
使用 drupal 的 web 根文件夹来包含自动加载,例如:
define('DRUPAL_ROOT', getcwd());
require_once DRUPAL_ROOT . '/vendor/autoload.php';
如果是其他系统:使用根文件夹变量或位置来包含 autoload.php
我能够通过删除作曲家并以正确的方式重新安装来解决。这是我所做的:
sudo apt 删除作曲家
sudo apt autoclean && sudo apt autoremove
使用说明从以下位置全局安装:https://getcomposer.org/doc/00-intro.md 从以下位置下载:https://getcomposer.org/installer 全局安装:mv composer.phar /usr/local/bin/composer(注意:我必须将我的移动到 mv composer.phar /usr/bin/composer)
然后我能够让 composer install 再次工作。在这个问题的底部找到了我的答案:https://github.com/composer/composer/issues/5510
composer install
期间没有提及任何错误,而是用户尚未运行该命令。
apt
出现此错误是因为缺少某些文件,主要原因是“Composer”
https://i.stack.imgur.com/Ozo3T.jpg
首先在 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
如果您有一个克隆的存储库并尝试设置该时间发生这种类型的错误,则将有一个名为“vendor”的目录需要位于您的根目录中。
“.gitingore”文件编写的代码不包含 GIT 上的供应商目录,因此在克隆 GIT 后,您的项目面临缺少供应商目录的问题。
添加供应商目录后,您的项目将再次开始工作。
使用此 require_once __DIR__ ."/vendor/autoload.php";
而不是此 require 'vendor/autoload.php';
__DIR__
表示当前路径
在linux中先添加github个人访问令牌
导航到 GitHub 的个人访问令牌页面。点击“生成新令牌”按钮。输入有意义的“Note”,选择“repo”作为范围,然后点击“Generate token”按钮。记下令牌。
5 在终端中输入新的“个人访问令牌”
export COMPOSER_AUTH='{"github-oauth":{"github.com":"AB8cd4cab23a9d5399934a7d7698d3fa74e9cfAB"}}'
在终端 composer install
中运行
更改 php.ini 上的 auto_prepend_file 属性
; Automatically add files before PHP document.
;http://php.net/auto-prepend-file
auto_prepend_file =
composer install
,然后它将读取您的composer.json
文件的内容并将您的所有依赖项安装到vendor
文件夹中。如果没有这样做,我只能建议阅读我指出的文档并仔细检查所有内容。这就是“上传”和“部署”的真正区别。