gpt4 book ai didi

php - 需要(供应商/autoload.php): failed to open stream

转载 作者:行者123 更新时间:2023-12-03 04:51:21 27 4
gpt4 key购买 nike

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

确实是这个错误

Warning: require(vendor/autoload.php): failed to open stream: No such file or directory in C:\xampp\htdocs\site_web\send_mail.php on line 3

Fatal error: require(): Failed opening required 'vendor/autoload.php' (include_path='C:\xampp\php\PEAR') in C:\xampp\htdocs\site_web\send_mail.php on line 3

出现在我的代码的开头:

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没有什么可看的,我不知道我在这里缺少什么。

最佳答案

您缺少的是运行 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 安装,并且如果您当前没有 vendor 文件夹(如果您重新 checkout 一个项目,这是正常的),然后它将创建一个,并覆盖您已有的任何 composer.lock 文件,更新其中标记的包版本,这就是潜在危险。

类似地,如果您当前没有 composer.lock 文件(例如,如果它未提交到项目中),则 composer install 也会有效地执行 Composer 更新。因此,了解两者之间的差异至关重要,因为它们绝对不可互换。

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

composer update ramsey/uuid

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

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

Composer 2.0 消除了安装和更新结果之间任何剩余的不一致之处;如果你正在运行 Composer 1.x 你绝对应该 upgrade .

关于php - 需要(供应商/autoload.php): failed to open stream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41209349/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com