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



我使用PHPMailer从我的网站向我的用户发送更新。我无法访问服务器上的php.ini文件。整个PHP在本地主机工作良好,但说,"无法连接到SMTP主机"在我的主机服务器上。请帮助!我是PHP新手

在运行时启用扩展功能: dl()

dl -在运行时加载PHP扩展

在共享主机上此功能通常是禁用的!
由于PHP 5.3 dl()在某些SAPI中被禁用,但在CLI, CGI和Embed模式中没有。

在php.ini中可以通过设置enable-dl

来激活dl()

PHP运行后,即使您可以取消配置行注释,也不会导致加载库。同样,你也不能通过。htaccess

来覆盖它

但是您可以在运行时使用dl()函数加载扩展,但请注意,至少从v5.3开始,它通常默认禁用PHP api -如果您在受限制的环境中工作(例如共享主机/托管主机)它可能也会被禁用,无论它是SAPI/CGI/fCGI出于安全原因。即使在使用dl支持编译二进制文件的地方,也必须在php.ini

中显式启用它。

"无法连接到SMTP主机"

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

如果您只需要在PHP代码和MTA之间支持ssmtp,那么简单地运行stunnel可能会少很多痛苦。然而,这是以您需要使用SMTP为前提的——您没有说明这是在哪个操作系统上运行的。

PHPmailer不使用php.ini中的SMTP设置。你应该通过它自己的方法来设置它。请参阅这篇文章了解进一步的说明,并确保您使用了正确的设置。这篇文章讨论的是GMail,但它也可以用于其他帐户。

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

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

<?php phpinfo(); ?>

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

最新更新