php 在 XAMPP 中启用 OpenSSL
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/9466086/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Enabling the OpenSSL in XAMPP
提问by Mert MET?N
I spent three hours but I did not find anything; I'm unable to connect to a SSL enabled server. I want to list what i did:
我花了三个小时,但没有找到任何东西;我无法连接到启用 SSL 的服务器。我想列出我所做的:
First checked my PHP extensions directory was in order; extension wasn't there, php_openssl.dll
首先检查我的PHP扩展目录是否有序;扩展名不存在,php_openssl.dll
Then I opened my php.inifile but I could not see any extension=php_openssl.dllline to uncomment.
然后我打开了我的php.ini文件,但我看不到任何extension=php_openssl.dll行来取消注释。
Also, I searched on Google and saw people with the same problem. http://www.apachefriends.org/f/viewtopic.php?p=162623
另外,我在谷歌上搜索,看到有同样问题的人。 http://www.apachefriends.org/f/viewtopic.php?p=162623
However, I also have
不过,我也有
OPENSSL_CONF C:/xampp/apache/bin/openssl.cnf
...
openssl
OpenSSL support enabled
OpenSSL Library Version OpenSSL 0.9.8l 5 Nov 2009
OpenSSL Header Version OpenSSL 0.9.8l 5 Nov 2009
no lines . What should I do? Please share your suggestions.
没有线。我该怎么办?请分享您的建议。
回答by Memochipan
Yes, you must open php.ini
and remove the semicolon to:
是的,您必须打开php.ini
并删除分号才能:
;extension=php_openssl.dll
If you don't have that line, check that you have the file (In my PC is on D:\xampp\php\ext
) and add this to php.ini
in the "Dynamic Extensions" section:
如果您没有该行,请检查您是否拥有该文件(在我的 PC 上D:\xampp\php\ext
)并将其添加到php.ini
“动态扩展”部分:
extension=php_openssl.dll
回答by Mert MET?N
[PHP_OPENSSL]
extension=php_openssl.dll
This is the answer.
这就是答案。
回答by macio.Jun
I use xampp. Beforehand I tried the example file "test_smtp_gmail_basic.php" in phpMailer (you can download phpMailer here: https://github.com/Synchro/PHPMailer), but I got the following error:
我使用 xampp。事先我在 phpMailer 中尝试了示例文件“test_smtp_gmail_basic.php”(您可以在此处下载 phpMailer:https: //github.com/Synchro/PHPMailer),但出现以下错误:
Mailer Error: The following From address failed: [email protected]
邮件程序错误:以下发件人地址失败:[email protected]
After I commented out ; extension=php_openssl.dll
in php.ini, it is working now.
在我; extension=php_openssl.dll
在 php.ini 中注释掉之后,它现在可以工作了。
回答by sameer.nuna
In xampp, if "extension=php_openssl.dll" is not present in your php.ini file then add it in the "Windows Extensions" section of your php.ini file and restart your apache. It works for me..
在 xampp 中,如果 php.ini 文件中不存在“extension=php_openssl.dll”,则将其添加到 php.ini 文件的“Windows 扩展”部分并重新启动 apache。这个对我有用..
回答by Roni davelman
You will need to edit your php.ini. It's 4 easy steps.
您将需要编辑您的 php.ini。这是4个简单的步骤。
Find your php.ini file.
找到您的 php.ini 文件。
$inipath = php_ini_loaded_file();
Enable openssl in the file:
在文件中启用openssl:
extension=php_openssl.dll
Turn allow_url_fopen on
打开allow_url_fopen
allow_url_fopen = On
Restart apache and you are done!
重新启动 apache,你就完成了!
回答by shazyriver
Things have changed for PHP > 7. This is what i had to do for PHP 7.2.
PHP > 7 的情况发生了变化。这就是我必须为 PHP 7.2 做的事情。
Step: 1:Uncomment extension=openssl
步骤:1:取消注释extension=openssl
Step: 2:Uncomment extension_dir = "ext"
步骤:2:取消注释extension_dir = "ext"
Step: 3:Restart xampp.
步骤:3:重启xampp。
Done.
完毕。
Explanation: ( From php.ini )
说明:(来自 php.ini )
If you wish to have an extension loaded automatically, use the following syntax:
如果您希望自动加载扩展,请使用以下语法:
extension=modulename
Note :The syntax used in previous PHP versions (extension=<ext>.so
and extension='php_<ext>.dll
) is supported for legacy reasons and may be deprecated in a future PHP major version. So, when it is possible, please move to the new (extension=<ext>
) syntax.
注意:以前的 PHP 版本(extension=<ext>.so
和extension='php_<ext>.dll
)中使用的语法由于遗留原因受到支持,并且可能会在未来的 PHP 主要版本中被弃用。因此,如果可能,请移至新的 ( extension=<ext>
) 语法。
Special Note:Be sure to appropriately set the extension_dir
directive.
特别注意:一定要适当地设置extension_dir
指令。
回答by Rudy Lister
I am assuming that this question is for those using a windows based system.
我假设这个问题是针对那些使用基于 Windows 的系统的。
After making sure that the extension extension=php_openssl.dll in your php.ini file does not have a semicolon.
确保 php.ini 文件中的 extension=php_openssl.dll 没有分号后。
Then make sure that you have added C:/xampp/apache/bin into your environment path in order to use openssl without having move the command prompt to that directory C:/xampp/apache/bin
然后确保您已将 C:/xampp/apache/bin 添加到您的环境路径中,以便使用 openssl 而无需将命令提示符移动到该目录 C:/xampp/apache/bin
回答by BurninLeo
So, what did we do to make openssl_pkey_new()
and all the other openssl_
functions in PHP work...
那么,我们做了什么使PHP 中的openssl_pkey_new()
所有其他openssl_
函数都能工作......
- Enabled the extension
php_openssl.dll
in the (right/active)php.ini
. Checked. - Checked that there exists a
openssl.cnf
inxampp\apache\conf\
(and also in two other directories within XAMPP). Checked. - Added the environment variable
OPENSSL_CONF
in the Windows system settings with the full path to the aboveopenssl.cnf
. Checked. - Restarted Apache (and after that did not work restarted the computer several times...). Checked.
php_openssl.dll
在 (right/active) 中启用扩展php.ini
。检查。- 检查是否存在
openssl.cnf
inxampp\apache\conf\
(以及 XAMPP 中的其他两个目录)。检查。 OPENSSL_CONF
在 Windows 系统设置中添加了环境变量以及上面的完整路径openssl.cnf
。检查。- 重新启动Apache(之后没有工作重新启动计算机几次......)。检查。
Still does not work, and throwing errors such as
仍然不起作用,并抛出诸如
- error:0E06D06C:configuration file routines:NCONF_get_string:no value
- error:02001002:system library:fopen:No such file or directory
- error:2006D080:BIO routines:BIO_new_file:no such file
- 错误:0E06D06C:配置文件例程:NCONF_get_string:无值
- 错误:02001002:系统库:fopen:没有那个文件或目录
- 错误:2006D080:BIO 例程:BIO_new_file:没有这样的文件
Okay, here are another two more things to check.
好的,这里还有另外两件事要检查。
1. Trouble with the environment
1.环境问题
Run php_info()
from a PHP script, and go to the "Apache Environment" section. Check the value of OPENSSL_CONF
.
php_info()
从 PHP 脚本运行,然后转到“Apache 环境”部分。检查 的值OPENSSL_CONF
。
Surprise. This is not what we have set in the windows system settings.
惊喜。这不是我们在windows系统设置中设置的。
The solution is simple. Set the environment variable in the PHP script.
解决方法很简单。在 PHP 脚本中设置环境变量。
putenv('OPENSSL_CONF=C:\xampp\apache\conf\openssl.cnf');
2. Trouble with relative filenames
2. 相对文件名问题
Now, openssl_pkey_new()
will work, but openssl_pkey_export_to_file()
does still not work and returns false
without any further explanation?
现在,openssl_pkey_new()
会起作用,但openssl_pkey_export_to_file()
仍然不起作用并返回false
而没有任何进一步的解释?
Check the filename that you have specified as output filename. It will not work in Windows as long as you do not specify the full path.
检查您指定为输出文件名的文件名。只要您不指定完整路径,它就不会在 Windows 中工作。
$folder = realpath('../keyring');
$outfile = $folder.'/private.pem';
openssl_pkey_export_to_file($key, $outfile);
回答by mpalencia
STEP 1: On your php.ini
comment out ;extension=php_openssl.dll
第 1 步:关于您的php.ini
评论;extension=php_openssl.dll
STEP 2: Copy libeay32.dll and ssleay32.dll from your PHP root folder and paste it your Apache/bin folder
第 2 步:从 PHP 根文件夹复制 libeay32.dll 和 ssleay32.dll 并将其粘贴到 Apache/bin 文件夹
STEP 3: Restart Apache
第 3 步:重新启动 Apache