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

我如何取消注释;;extension=php_openssl.dll“;通过php脚本(在运行时)?,php,Php,我正在使用PHPMailer从我的站点向我的用户发送更新。我无法访问该服务器中的php.ini文件。整个PHP在localhost中运行良好,但在我的托管服务器上显示“无法连接到SMTP主机”。 请帮忙!我对PHP非常陌生。有一个函数用于在运行时启用扩展: dl-在运行时加载PHP扩展 在共享主机上,此功能经常被停用 由于PHP5.3 dl()在某些SAPI中被禁用,但在CLI、CGI和嵌入模式中未被禁用 在php.ini中,您可以在php运行后通过设置激活dl(),即使您可以取消对配置行的注释

我正在使用PHPMailer从我的站点向我的用户发送更新。我无法访问该服务器中的php.ini文件。整个PHP在localhost中运行良好,但在我的托管服务器上显示“无法连接到SMTP主机”。
请帮忙!我对PHP非常陌生。

有一个函数用于在运行时启用扩展:

dl-在运行时加载PHP扩展

在共享主机上,此功能经常被停用
由于PHP5.3 dl()在某些SAPI中被禁用,但在CLI、CGI和嵌入模式中未被禁用


在php.ini中,您可以在php运行后通过设置激活
dl()
,即使您可以取消对配置行的注释,也不会导致加载库。类似地,您也不能通过.htaccess覆盖此功能

但是您可以在运行时使用加载扩展,但请注意,至少从v5.3开始,在PHP SAPI上默认情况下它是禁用的,并且如果您在受限环境(例如共享主机/托管主机)中工作,那么出于安全原因,无论它是SAPI/CGI/fCGI,它也可能在那里被禁用。即使二进制文件是使用dl支持编译的,也必须在php.ini中显式启用它

“无法连接到SMTP主机”

您确定需要php openSSL扩展来解决这个问题吗


如果您只需要在PHP代码和MTA之间支持ssmtp,那么简单地运行stunnel可能会轻松得多。但是,这是以您需要使用SMTP为前提的—您没有说明这是在什么操作系统上运行的。

PHPmailer在php.ini中不使用SMTP设置。你应该通过它自己的方法来设置它。有关更多说明,请参阅,并确保使用正确的设置。这篇文章谈到了GMail,但它也可以用于其他账户

更新:问题的根源可能是服务器上的限制性防火墙

更新2:我非常怀疑缺少openssl扩展是您出现问题的原因。你能告诉我们你为什么这么想吗?我在许多共享主机上托管过,并且使用PHPmailer时没有出现问题。如果有疑问,请创建并检查包含以下内容的页面:

<?php phpinfo(); ?>

它应该列出您的扩展名(如果主机上未禁用
phpinfo()
)。
此外,您可以尝试在不使用SSL/TLS身份验证的情况下使用SMTP,看看这是否真的是问题的根源。如果是,您别无选择,只能说服/替换您的服务提供商。

不,它不使用PHP SMTP处理程序,但它使用openssl函数封装自己的SMTP协议stack@symcbean:请详细说明您认为openssl存在问题的原因。我非常怀疑这个扩展中的问题,缺少openssl的常见错误消息是“未定义函数”或诸如此类。OP不太清楚什么在localhost上有效,但由于他没有PHP方面的经验,也可能是错误的设置。因为Unknown100明确指出了问题所在。事实上,他提出了一个部分解决方案(扩展=…),但没有(IMHO)解决他描述的症状(phpMail无法连接到SMTP主机)。但是,在我们从OP那里得到一些反馈之前,我们无法告诉您更多。如果您至少建议OP先检查phpinfo(),那就太好了-不清楚扩展是否真的丢失了。