2013-07-01 146 views
0

我写使用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->Username = '[email protected]'; 
$mail->Password = 'password'; 
$mail->SetFrom('[email protected]', 'Admin'); 
$mail->AddReplyTo('[email protected]', 'Name'); 
$mail->AddAddress('[email protected]'); 
$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".... 
+0

你可能使用不同的php.ini对于CLI,比较'php -i'和'<?php phpinfo();' –

+0

的输出,如果有两个文件,如何为CLI和http服务器使用一个文件? – Hoclamweb

回答

0

也许你有两个不同的php.ini文件,一个HTTP服务器和一个你命令行客户端。

做一个<?php phpinfo(); ?>并检查浏览器和命令行php.ini被加载。

输出应该是这样的 “加载的配置文件C:\ XAMPP \ PHP \ php.ini中”

相关问题:How to find the php.ini file used by the command line?

+0

现在工作,谢谢! – Hoclamweb

0

我觉得安东尼斯特林corretn。你可以试试这个。找到cli的php.ini文件的位置。使用以下命令

php -i | grep php.ini 

它会显示ini文件的PHP的CLI

添加以下行有

extension=php_openssl.dll 

路径和它应该工作。我还没有测试过。如果有任何问题,请随时更改。

+0

不需要重新启动系统。 (这不是MS软件:P)对于CLI,更改应立即生效。如果它是一个Apache服务器,则只有Apache服务器必须重新启动。 – Atli

+0

是Atil.Edited。感谢您指出 –

0

我猜这是你的PHP配置。 HTTP服务器和命令行没有使用相同的文件,并且命令行使用的文件缺少openssl扩展的包含。

使用在命令行中的phpinfo()功能,找出它正在使用的文件:

php -r "phpinfo();" 

然后寻找“加载的配置文件”行,看哪个文件它的使用。如果这是一个Windows服务器,你只需要进入该文件,并通过附加此将其添加OpenSSL的扩展:

extension=php_openssl.dll 

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

0

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

相关问题