PITS /
01429: UrlScheme building condition never match $_SERVER['HTTPS'] == 'on'
Summary: UrlScheme building condition never match $_SERVER['HTTPS'] == 'on'
Created: 2018-05-04 08:13
Status: Open
Category: Bug
From: PwnyTail
Assigned:
Priority: 4
Version: all
OS: nginx/apache/haproxy
Description: The PHP Variable $_SERVER['HTTPS'] doesn't exists. Change to $_SERVER['HTTP_HTTPS'].
Patch:
--- a/pmwiki.php
+++ b/pmwiki.php
@@ -79,7 +79,7 @@ $RecentChangesFmt = array(
'* [[{$Group}.{$Name}]] . . . $CurrentTime $[by] $AuthorLink: [=$ChangeSummary=]',
'$Group.RecentChanges' =>
'* [[{$Group}/{$Name}]] . . . $CurrentTime $[by] $AuthorLink: [=$ChangeSummary=]');
-$UrlScheme = (@$_SERVER['HTTPS']=='on' || @$_SERVER['SERVER_PORT']==443)
+$UrlScheme = (@$_SERVER['HTTP_HTTPS']=='on' || @$_SERVER['SERVER_PORT']==443)
? 'https' : 'http';
$ScriptUrl = $UrlScheme.'://'.$_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_NAME'];
$PubDirUrl = preg_replace('#/[^/]*$#', '/pub', $ScriptUrl, 1);
PwnyTail May 04, 2018, at 08:15 AM
$_SERVER['HTTPS'] does exist on some servers. If for some reason your server doesn't provide $_SERVER['HTTPS'] and especially if you run on a different port (as the second condition also fails), you can always set $ScriptUrl and $PubDirUrl in config.php. I'll review the documentation to see if it is reliable to only use $_SERVER['HTTP_HTTPS'] as a check if the other 2 conditions do fail. --Petko May 04, 2018, at 09:41 AM