2012-10-18 41 views
15

OS:的Ubuntu 12.04 64位OpenSSL的不是PHP内置的Web服务器工作

PHP版本: 5.4.6-2〜精确+ 1

当我测试HTTPS页面我我正在通过内置的web服务器(php5 -S localhost:8000),Firefox(16.0.1)说“加载问题:连接中断”,而终端告诉我“:: 1:37026无效的请求(不受支持的SSL请求)”。

的phpinfo()告诉我:

  • 注册流式套接字的Transport:TCP,UDP,UNIX,UDG,SSL,SSLV3, TLS
  • [卷曲] SSL:是
  • SSL版本:OpenSSL的/ 1.0.1
  • 的OpenSSL:

    OpenSSL的支持:启用

    OpenSSL库OpenSSL版本1.0.1 2012年3月14日

    OpenSSL的头版本的OpenSSL 1.0.1 2012年3月14日

是,HTTP页面的工作就好了。

任何想法?

+0

应该可能在ServerFault上。 – quantum

+0

不完全是你想要的,但你可以尝试ngrok http://stackoverflow.com/a/23243958/632951 – Pacerier

回答

31

查看内置网络服务器垫片手册部分:
http://php.net/manual/en/features.commandline.webserver.php

它不支持SSL加密。这是纯粹的HTTP请求。 openssl扩展和功能支持是无关的。它不接受请求或通过流封装发送响应。

如果你想SSL超过它运行,尝试stunnel包装:

php -S localhost:8000 & 
stunnel3 -d 443 -r 8080 

这只是反正玩弄。

+1

在哪里可以找到采用这些选项的stunnel版本?根据stunnel.org上的文档,可用的应用程序不会使用“-d”或“-r”选项。 –

+1

使用[stunnel3](http://man.devl.cz/man/8/stunnel3)。看起来'stunnel4'主要作为守护进程/通过iptables运行,并且需要一个配置文件。 – mario

+0

哦,我明白了...... stunnel3 Perl程序位于这里:https://www.stunnel.org/downloads/stunnel3(这也包含在发行版中。)感谢您的澄清。 –