【问题标题】:use phpmailer\phpmailer\PHPMailer throws 'the import ... cannot be resolved [duplicate]使用 phpmailer \\ phpmailer \\ PHPMailer throws '导入...无法解决[重复]
【发布时间】:2021-12-10 23:08:32
【问题描述】:

我已经看到很多关于此的问答,但在我看来,他们的问题更进一步。

use 语句之后的所有对象在 Eclipse IDE 中都带有红色下划线,显示错误 the import phpmailer\phpmailer\PHPMailer cannot be resolved.

<?php 
use phpmailer\phpmailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;

require '/Users/me/eclipse/php-2021-09/vendor/autoload.php';

你可能会注意到phpmailer\phpmailer\... vs PHPMailer\PHPMailer\ 这是因为所有的例子都显示大写字母,而 composer 将它安装到 phpmailer\phpmailer。无论如何,两个版本都显示错误。

【问题讨论】:

  • 你是从 composer 安装的吗?还是手动设置?如果手动,您是否插入了文档中显示的 require 语句?见github.com/PHPMailer/PHPMailer。也许您可以提供一些可能有用的额外信息。比如php版本、phpmailer版本、服务器类型等。也尝试删除第一个use,看看SMTPuse是否也报错,或者只是phpMailer一个。
  • 感谢您的回复 Allart。首先,我尝试了手动设置,包括 require 语句。然后我用composer尝试了它,你现在可以看到什么(并将第一个useargument to capital letters again). I started off with the vendor`文件夹更改为项目文件夹旁边,现在我在项目文件夹下使用composer重新安装它(请参阅我的类似问题stackoverflow.com/questions/69720091/… ). php 7.3.24, phpmailer 6.5, MAMP 本地主机, Eclipse 2021-09 (4.21.0), 还有什么?

标签: php namespaces phpmailer


【解决方案1】:

区分大小写,应该是:

use PHPMailer\PHPMailer\PHPMailer;

Composer 包名与命名空间不同,它们也与路径名不同。

【讨论】:

  • 但这首先不起作用。这就是为什么我把它改成小写,所以我从use PHPMailer\PHPMailer\PHPMailer;开始。很抱歉造成混乱
  • 使用声明中的大写字母绝对正确。通往作曲家自动加载器的路径是可疑的;看起来它是从 IDE 配置文件夹而不是您的项目加载的,因此您可能在一个地方配置包并从另一个地方加载它们。
  • 这就是它在 Mac 上的样子... Eclipse 在路径中,因为我将与网页(php 库等)相关的所有内容都存储在那里。但是您要说的是,当这些文件被正确识别时,Eclipse 应该从那里获得一个名称空间吗?我在运行任何脚本之前收到错误,只需查看编辑器
  • 我只是用相对路径 require '/../../php-2021-09/vendor/autoload.php'; 替换了绝对路径,并且我还明确地将 required Exception.php、PHPMailer.php 和 SMTP.php - 没有变化
  • 这不是相对路径。你能在你的问题中显示该文件夹的内容吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多