如何在不访问php.ini的情况下启用扩展(openssl,...)?

时间:2015-04-06 16:45:46

标签: php .htaccess codeigniter email gmail

我使用codeigniter发送邮件但是我的共享主机有问题,因为我无法访问php.ini所以我有这些错误:

A PHP Error was encountered
Severity: Warning
Message: fsockopen(): unable to connect to ssl://smtp.googlemail.com:465
(Connection timed out)
Message: fwrite() expects parameter 1 to be resource, boolean given
Message: fgets() expects parameter 1 to be resource, boolean given

我也使用了.htaccess这个内容:

php_extension openssl.so

但我收到了这个错误:

  

内部服务器错误

     

服务器遇到内部错误或配置错误,但无法解决       完成您的请求。       服务器错误日志中可能提供了有关此错误的更多信息。       此外,尝试时遇到500内部服务器错误错误       使用ErrorDocument来处理请求。

我也读了很多关于这个问题的话题,但没有一个能解决我的问题。 现在,我不知道该怎么做!

更新 我在主人身上发现了一些东西,我更加困惑了!我写了这个:

if (extension_loaded('openssl')) 
{
    echo "enabled";     
}
die();

那么为什么我会收到这些错误:

A PHP Error was encountered
Severity: Warning
Message: fsockopen(): unable to connect to ssl://smtp.googlemail.com:465
(Connection timed out)
Message: fwrite() expects parameter 1 to be resource, boolean given
Message: fgets() expects parameter 1 to be resource, boolean given

3 个答案:

答案 0 :(得分:0)

php有dl()在运行时启用扩展 见http://php.net/manual/en/function.dl.php

  

dl - 在运行时加载PHP扩展

试试这个

 function load_lib($n, $f = null)
 {
  return extension_loaded($n) or dl(((PHP_SHLIB_SUFFIX === 'dll') ? 'php_' : '') . ($f ? $f : $n) . '.' . PHP_SHLIB_SUFFIX);
 }

load_lib('openssl');

答案 1 :(得分:0)

OpenSSL必须是compiled with PHP,所以你可能不会选择共享托管。

尝试切换到SendGrid - 他们有一个free usage tier,允许您每天发送400封电子邮件,并且广泛example code for PHP

答案 2 :(得分:0)

我通过使用我的主机安全邮件服务器而不是Gmail解决了我的问题。无论如何我都没有找到通过Gmail发送邮件的信息!