我知道这个问题已经发布了很多次,但对我来说,这似乎是一个不同的问题。
事实上,这个错误
警告:需要(供应商/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并运行了composer require phpmailer/phpmailer
)。
因此,我在Windows命令行中使用:dir /s autoload.php
查找此文件,并在此处找到了一个:C:\Windows\SysWOW64\vendor\autoload.php
,
但对我来说,syswow64文件夹与autoload.php没有什么可看的,我看不到我在这里遗漏了什么。
发布于 2016-12-18 23:01:06
您缺少的是运行composer install
,它将导入您的软件包并创建供应商文件夹,以及自动加载脚本。
确保相对路径是正确的。例如,PHPMailer中的示例脚本位于项目根目录下的examples/
中,因此从那里加载composer自动加载器的正确相对路径应该是../vendor/autoload.php
。
您在C:\Windows\SysWOW64\vendor\autoload.php
中找到的autoload.php可能是一个全局composer安装-您通常会在其中放置诸如phpcs、phpunit、phpmd等内容。
composer update
is 不是同一件事,也可能不是你想要使用的东西。如果你的代码是用你当前的包版本测试的,那么运行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。
发布于 2017-11-28 01:17:28
如果在运行以下命令时也出现错误
composer install
只需先运行此命令
composer dump-autoload
此命令将清理所有编译的文件及其路径。
发布于 2018-01-28 22:26:11
@Bashir几乎帮助了我,但我需要:
composer update --no-scripts
https://stackoverflow.com/questions/41209349
复制相似问题