我刚刚开始使用PHP,我的第一个任务是通过将检索到的表单数据发送到指定的电子邮件地址来处理对网站的请求。
我创建了一个简单的contact.php文件,该文件由表单上的“提交”按钮调用。正在检索数据,我已使用以下代码处理它:
<?php
require_once('PHPMailerAutoload.php');
$errors = '';
$myemail = 'randomtext@gmail.com';
$mypassword = 'randomtext';
if(empty($_POST['fname']) ||
empty($_POST['lname']) ||
empty($_POST['email']) ||
empty($_POST['subject']) ||
empty($_POST['message']))
{
$errors .= "\n Error: all fields are required!";
}
$name = $_POST['fname'] . ' ' . $_POST['lname'];
$email_address = $_POST['email'];
$message = 'De : ' . $name . '\n Concerning : ' . $_POST['subject'] .
'\n\n' . $_POST['message'] ;
$subject = 'Query from website : ' . $_POST['subject'];
$mail = new PHPMailer();
$mail-> isSMTP();
$mail-> SMTPAuth = true;
$mail-> SMTPSecure = 'ssl';
$mail-> SMTPHost = 'smtp.gmail.com';
$mail-> SMTPDebug = 2;
$mail-> Port ='465';
$mail-> isHTML();
$mail-> UserName=$myemail;
$mail-> Password=$mypassword;
$mail-> SetFrom = $myemail;
$mail-> Subject = $subject;
$mail-> AddAddress($myemail);
$mail -> Body = $message;
if( empty($errors))
{
$mail -> Send();
}
else
print $errors;
?>
邮件未被发送,调试器抛出此错误: 扩展缺失:openssl
所以我在其他地方读到我需要在PHP.ini文件中注释掉extension = openssl 但是,我在Windows安装的任何地方都没有PHP.ini文件。 http://localhost/phpinfp.php说这个文件在c:\ Windows中,但那里没有这样的文件。
我的c:\ PHP目录中有两个文件叫做php.ini-development和php.ini-production。但是,当我将其中的第一个重命名为php.ini并取消注释行extension = openssl(之后重新启动IIS)时,PHP完全无法运行并调用contact.php会产生500错误。
所以,基本上我需要找到真正使用的PHP.ini并编辑它或者找到开发/生产文件中的哪些行导致PHP中断并编辑它们。
Windows 7上的php 7.2.4