UNA installer still forgot to detect http or https
I just upgrading to Dolphin 7.4.1. Next step I should start to study how to use dolphin_migration for migration dolphins to UNA.
But, on the UNA website, downloaded UNA 9 with only 4 modules. So I downloaded UNA on github:
UNA installer still forgot to detect http or https, If the site is already using https, we will see a messy page after the installation is complete.
-
-
·
Alex T⚜️
- ·
UNA installer detects if https by checking 'HTTPS' server variable, usually it's set when site is using https, if you have another way to properly detect https you are welcome to share it.
-
·
Alex T⚜️
-
- · brentsu
-
·
In reply to Alex T⚜️
- ·
Maybe in your or other server support $_SERVER['HTTPS'], but my server not support that.
So, when we install Dolphin or UNA, we will see the wrong URL. please see install01 and install02.
I writing this program to display the environment variables supported by my server:
< ? php
echo '<PRE>'; print_r($_SERVER); echo '</PRE><br />';
please see install03 for Server A and install04 for Server B.
You can see that there is no $_SERVER['HTTPS'] in the server variable.
therefore I use $_SERVER['HTTP_X_FORWARDED_PROTO'] to rewrite this proto()
protected function proto() { if (isset($_SERVER['HTTP_X_FORWARDED_PROTO'])) return $_SERVER['HTTP_X_FORWARDED_PROTO'] . '://'; elseif ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS']) || getenv('UNA_HTTPS')) return 'https://'; else return 'http://'; //return (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS']) || getenv('UNA_HTTPS') ? 'https://' : 'http://'; }
OR
protected function proto() { if (isset($_SERVER['HTTP_X_FORWARDED_PROTO'])) return $_SERVER['HTTP_X_FORWARDED_PROTO'] . '://'; else return (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS']) || getenv('UNA_HTTPS') ? 'https://' : 'http://'; }
Please see install5 for the execution result of the installation.
This is the dolphin installer's index.php:
$confFirst['site_url'] = array( 'name' => "Site URL", 'ex' => "http://www.mydomain.com/path/", 'desc' => "Your site URL (slash at the end is required)", 'def' => "http://", 'def_exp' => function () { $str = $_SERVER['HTTP_X_FORWARDED_PROTO'].'://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']; return preg_replace("/install\/(index\.php$)/", "", $str); }, 'check' => function ($arg0) { return strlen($arg0) >= 10 ? true : false; } );
P.S. When I re-edited the article iin Dolphin (of blog) and UNA, some words in PHP and HTML disappeared and could not be used! for example:
' < PRE > ' ;
< ? php
But there is no such problem in the Dolphin Forum!
-
-
·
Alex T⚜️
-
·
In reply to brentsu
- ·
Thank you for the explanation and sample code:
-
·
Alex T⚜️