我正在使用PHPMailer处理我正在处理的项目,而在我的localhost上,它就像一个魅力!但我正在使用朋友的服务器来测试不同设备的网站。由于我正在等待更多内容插入,我正在做一些关于网站功能的工作。
我编写了一个脚本,与PHPMailer一起完成了我需要做的所有事情,但在页面顶部,在我的doctype之前,我设置了几个会话变量。经过几个小时的修补,我逐渐意识到这是导致我的500错误的原因。我已经尝试将它们移动到head部分,但是服务器上唯一的(某种)工作方式是将它们完全注释掉。但是,当我尝试提交邮件时,它会转到PHP文件,并且永远不会像它应该的那样重定向到主页。
有关如何解决此问题的任何想法?如果它有所帮助,那么我的代码部分就是搞乱了:
$errors = isset($_SESSION['errors']) ? $_SESSION['errors'] : [];
$fields = isset($_SESSION['fields']) ? $_SESSION['fields'] : [];
更新:这是phpinfo的图像......
答案 0 :(得分:0)
在使用SESSION_ []超级全局变量之前,您是否曾致电session_start()?
session_start()根据通过GET或POST请求传递的会话标识符创建会话或恢复当前会话,或通过cookie传递。
答案 1 :(得分:0)
我遇到了与此类似的问题,当我将信息从表单发布到单独文件中的 PHPMailer 时,我花了几个小时来解决不断出现的 500 错误。我的脚本在我的本地主机上运行良好,但在网络服务器上运行失败。
事实证明这是一个路径问题。 Localhost 正在检查 phpmailer 文件的目录,但路径在服务器上不起作用。
我的解决方案是停止使用 composer 并手动设置路径:
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
include 'phpmailer/src/PHPMailer.php';
include 'phpmailer/src/SMTP.php';
include 'phpmailer/src/Exception.php';
phpmailer 目录与包含 phpmailer 设置的文件处于同一级别。我花了一些失眠试图解决:)