如何通过php脚本(在运行时)取消注释“; extension = php_openssl.dll”?

时间:2011-11-09 12:52:00

标签: php

我正在使用PHPMailer从我的网站向我的用户发送更新。我无法访问该服务器中的php.ini文件。整个PHP在localhost中工作正常,但在我的托管服务器上说“无法连接到SMTP主机”。 请帮忙!而且我对PHP很新。

3 个答案:

答案 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来查看这是否真的是问题的根源。如果是,您别无选择,只能说服/替换您的服务提供商。