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

事实上,这个错误

在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 autolload .php查找这个文件,并在这里找到了一个:C:\Windows\SysWOW64\vendor\ autolload .php,

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


当前回答

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

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

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

ErrorException ZipArchive::extractTo...

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

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

和工作!

其他回答

如果在运行时也得到错误

composer install

先运行这个命令

composer dump-autoload

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

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

须藤倾向于移除作曲家 Sudo apt自动清除&& Sudo apt自动删除 使用来自:https://getcomposer.org/doc/00-intro.md的说明进行全局安装 下载网址:https://getcomposer.org/installer 全局安装:mv作曲器。phar /usr/local/bin/composer (注意:我不得不把我的mv作曲家。phar /usr/bin/composer)

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

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

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

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

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

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

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

运行composer update也会执行composer安装,如果当前没有供应商文件夹(正常情况下,如果您有一个新的项目签出),那么它会创建一个,并覆盖任何composer。锁定您已经拥有的文件,更新其中标记的包版本,这是潜在的危险。

类似地,如果您目前没有作曲家。锁定文件(例如,如果它没有提交到项目中),那么composer install也会有效地执行一个composer更新。因此,理解两者之间的区别至关重要,因为它们肯定是不可互换的。

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

composer update ramsey/uuid

这将重新解析编写器中指定的版本。并将其安装到你的供应商文件夹中,并更新你的作曲器。锁定文件以匹配。如果您只需要对一个包进行特定的更新,那么这比一般的编写器更新更不可能引起问题。

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

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

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

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

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

ErrorException ZipArchive::extractTo...

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

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

和工作!