我正在使用PHPMailer从我的网站向我的用户发送更新。我无法访问该服务器中的php.ini文件。整个PHP在localhost中工作正常,但在我的托管服务器上说“无法连接到SMTP主机”。 请帮忙!而且我对PHP很新。
答案 0 :(得分:1)
有一个在运行时启用扩展的功能:dl()
。
dl - 在运行时加载PHP扩展
在共享主机上,此功能通常会被停用! 由于PHP 5.3 dl()在某些SAPI中被禁用,但在CLI,CGI和嵌入模式下都没有。
在php.ini中,您可以通过设置enable-dl
dl()
答案 1 :(得分:-1)
在PHP运行之后,即使您可以取消注释配置行,也不会导致加载lib。同样,你不能通过.htaccess
覆盖它但您可以使用dl() function在运行时加载扩展,但请注意,默认情况下,它至少在PHP SAPI上被禁用,因为至少是v5.3 - 并且如果您在受限制的环境中工作(例如共享主机/托管主机)出于安全原因,无论是否为SAPI / CGI / fCGI,它都可能在那里被禁用。即使在使用dl支持编译二进制文件的情况下,也必须在php.ini
中明确启用它“无法连接到SMTP主机”
你确定需要php openSSL扩展来解决这个问题吗?
如果您只需要支持PHP代码和MTA之间的ssmtp,那么简单地运行stunnel可能会少得多。但是,这预先假定您需要使用SMTP - 您没有说明运行的是什么操作系统。
答案 2 :(得分:-1)
PHPmailer不使用php.ini中的SMTP设置。您应该通过自己的方法进行设置。有关详细说明,请参阅this post,并确保使用正确的设置。这篇文章谈到了GMail,但它也可以用于其他账户。
更新:问题的根源也可能是服务器上的限制性防火墙。
UPDATE2 :我非常怀疑缺少openssl扩展是导致问题的原因。你能告诉我们你为什么这么认为吗?我已经托管在许多共享主机上并且使用了PHPmailer而没有任何问题。如有疑问,请创建并检查包含此内容的页面:
<?php phpinfo(); ?>
它应列出您的扩展名(如果主机上未禁用phpinfo()
)。
此外,您可以尝试使用没有SSL / TLS身份验证的SMTP来查看这是否真的是问题的根源。如果是,您别无选择,只能说服/替换您的服务提供商。