php每次更改端口号都会出错,php – $_SERVER返回的端口号错误[‘server_port’]

场景:我正在使用一些

PHP的Apache Web服务器.我将浏览器指向

https://my.example.com/test.php,其中包含以下代码行:

 
 

print_r($_SERVER);

?>

打印输出为SERVER_PORT的值是80,而不是443.但是如果我去https://my.example.com:80/test.php网络服务器(Apache)barfs(在连接到my.example.com:80时发生错误,SSL收到超过允许的最大值的记录长度错误代码:ssl_error_rx_record_too_long).如果我去https://my.example.com:443/test.php,那么URL重定向到https://my.example.com/test.php,没有错误或问题,除了我的PHP打印出服务器端口是80而不是443.

这是conf.d / ssl.conf文件的相关部分(我删除了我认为是无关的指令,并用IP_ADDRESS替换了实际的IP地址):

Listen IP_ADDRESS:443

ServerName my.example.com

ServerAlias my

DocumentRoot "/path/to/document_root/htdocs"

Options +Indexes

这是$_SERVER变量的完整打印(将我的服务器详细信息修改/更改为匿名示例):

Array

(

[HTTP_HOST] => my.example.com

[HTTP_USER_AGENT] => Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.11) Gecko/20101012 Firefox/3.6.11

[HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

[HTTP_ACCEPT_LANGUAGE] => en-us,en;q=0.5

[HTTP_ACCEPT_ENCODING] => gzip,deflate

[HTTP_ACCEPT_CHARSET] => ISO-8859-1,utf-8;q=0.7,*;q=0.7

[HTTP_KEEP_ALIVE] => 115

[HTTP_CONNECTION] => keep-alive

[HTTP_COOKIE] => PHPSESSID=randomstring_yes_I'm_that_paranoid

[PATH] => /sbin:/usr/sbin:/bin:/usr/bin

[SERVER_SIGNATURE] =>

Apache/2.2.3 (Red Hat) Server at my.example.com Port 80

[SERVER_SOFTWARE] => Apache/2.2.3 (Red Hat)

[SERVER_NAME] => my.example.com

[SERVER_ADDR] => IP_ADDRESS_1

[SERVER_PORT] => 80

[REMOTE_ADDR] => IP_ADDRESS_2

[DOCUMENT_ROOT] => /path/to/document_root/htdocs

[SERVER_ADMIN] => admin@example.com

[SCRIPT_FILENAME] => /path/to/document_root/htdocs/test.php

[REMOTE_PORT] => 49178

[GATEWAY_INTERFACE] => CGI/1.1

[SERVER_PROTOCOL] => HTTP/1.1

[REQUEST_METHOD] => GET

[QUERY_STRING] =>

[REQUEST_URI] => /test.php

[SCRIPT_NAME] => /test.php

[PHP_SELF] => /test.php

[REQUEST_TIME] => 1292273758

)

如您所见,SERVER_PORT为80,$_SERVER [‘HTTPS’]未设置.根据PHP文档,我认为如果PHP脚本通过HTTPS访问(这正是我正在做的),它应该被设置为非空值.

任何想法发生了什么?我只是Web开发人员 – 我不管这个服务器,但我的服务器管理员告诉我一切正常,但我想知道为什么$_SERVER [‘SERVER_PORT’]在查看HTTPS URL时返回80而不是443.

编辑:我编辑了上面的例子来说明打印整个$_SERVER变量的结果.

编辑3:好的,我已经发布了我认为是下面的答案(TL; DR:在VirtualHost指令内移动SSL指令,并更改该指令以引用我的网站使用其IP地址而不是通配符似乎有解决了这个问题).

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值