我想使用PHPMailer的类进行测试.在阅读了官方文档后,我看到有两种方法可以包含在我的项目中:
1)使用作曲家
2)复制内容并包含路径
第一个选择,作曲家,我不知道怎么做.第二个选项,复制内容和包含路径看起来更容易.
我用这行代码制作了一个test.php:
<?php
session_start();
if(isset($_SESSION['username']) and $_SESSION['username'] != ''){
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require 'assets/PHPMailer/src/Exception.php';
require 'assets/PHPMailer/src/PHPMailer.php';
require 'assets/PHPMailer/src/SMTP.php';
$mail = new PHPMailer;
echo 'Versión actual de PHP: ' . phpversion();
}else{
?>
<br>
<br>
<div class="row">
<div class="text-center">
<p class='errorLogin'>Inactive session, relogin <a href="login.php">here</a></p>
</div>
</div>
<?php
}?>
Run Code Online (Sandbox Code Playgroud)
此代码仅将clases加载到环境中并生成对象PHPMailer类的实例.
运行后,日志文件显示错误:
[Tue Oct 17 10:17:10.331051 2017] [:error] [pid 3879] [client 192.168.0.184:50679] PHP Parse错误:语法错误,/ var/www/test/sendMail中的意外"使用"(T_USE) .PHP
PHP版本:5.6.30-0 + deb8u1
有人能帮助我吗?
问题是您使用use关键字.从文档:
use关键字必须在文件的最外层范围(全局范围)或命名空间内声明中声明.这是因为导入是在编译时完成的,而不是运行时,所以它不能是块作用域.
因此,您的代码应该是这样的:
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
session_start();
if (isset($_SESSION['username']) and $_SESSION['username'] != ''){
[...]
Run Code Online (Sandbox Code Playgroud)
小智 7
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
//Your function Code
?>
Run Code Online (Sandbox Code Playgroud)
在页面顶部而不是在函数内部使用此类。