PHPMailer在浏览器中工作,但在命令提示下不工作

PHPMailer在浏览器中工作,但在命令提示下不工作,php,phpmailer,Php,Phpmailer,我使用PHPMailer编写代码发送邮件 include 'class.phpmailer.php'; $mail = new PHPMailer(); $mail->IsSMTP(); $mail->SMTPAuth = true; $mail->SMTPSecure = 'ssl'; $mail->SMTPDebug = 1; $mail->Host = 'smtp.gmail.com'; $mail->Port = 465; $mail->Use

我使用PHPMailer编写代码发送邮件

include 'class.phpmailer.php';
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->SMTPAuth = true;
$mail->SMTPSecure = 'ssl';
$mail->SMTPDebug  = 1;
$mail->Host = 'smtp.gmail.com';
$mail->Port = 465;
$mail->Username = 'example1@gmail.com';
$mail->Password = 'password';
$mail->SetFrom('example2@gmail.com', 'Admin');
$mail->AddReplyTo('example@yahoo.com', 'Name');
$mail->AddAddress('xample3@gmail.com');
$mail->Subject = 'Active email';
$mail->MsgHTML('Click the link to active');
$mail->Send();
当我使用浏览器时,它可以发送邮件,但在命令提示下

php path_to_file
它不工作,错误是:

SMTP -> ERROR: Failed to connect to server: Unable to find the socket transport ssl"....

可能您有两个不同的php.ini文件,一个用于http服务器,另一个用于命令行客户端

执行
并在浏览器和命令行中检查加载的php.ini

输出应该类似于“加载的配置文件c:\xampp\php\php.ini”


相关问题:

我认为安东尼·斯特林是正确的。你可以试试这个。找到cli的php.ini文件的位置。使用以下命令

php -i | grep php.ini
它将显示Php CLI的ini文件路径

在那里添加以下行

extension=php_openssl.dll

它应该会起作用。我还没有测试过。如果有任何错误,请随意更改。

我猜这是您的PHP配置。HTTP服务器和命令行使用的文件不同,命令行使用的文件缺少openssl扩展的include

使用命令行中的
phpinfo()

php -r "phpinfo();"
然后查找“已加载的配置文件”行,查看它正在使用哪个文件。如果这是一个Windows服务器,您只需进入该文件并添加openssl扩展名,方法是将以下内容附加到该文件:

extension=php_openssl.dll

并确保
扩展_dir
设置为正确的路径;这是PHP安装目录的“ext”目录。

PHP命令行需要一个PHP.ini来加载像openssl这样的扩展。我使用Wamp,Apache使用的php.ini文件与php命令行使用的文件不同

Apache使用的php.ini文件位于:
C:\wamp\bin\Apache\apache2.X.X\bin


命令行使用的php.ini文件位于:
C:\wamp\bin\php\phpX.X.XX

您可能正在为CLI使用不同的php.ini,比较
php-i
的输出如果有两个文件,如何为CLI和http服务器使用一个文件?不需要重新启动系统。(这不是MS软件:P)对于CLI,更改应立即生效。如果是Apache服务器,则只需重新启动Apache服务器。