diff options
Diffstat (limited to 'wizard/index.php')
| -rw-r--r-- | wizard/index.php | 364 | 
1 files changed, 240 insertions, 124 deletions
| diff --git a/wizard/index.php b/wizard/index.php index d1e01074..f1960183 100644 --- a/wizard/index.php +++ b/wizard/index.php @@ -8,79 +8,101 @@  		<link rel="shortcut icon" href="/favicon.ico" />  </head>  <?php -define('FC_EOL', 33); -define('FC_DEV', 37); -define('EL_EOL', 6); -define('EL_DEV', 10); +define('FC_EOL', 40); +define('FC_DEV', 44); +define('EL_EOL', 7); +define('EL_DEV', 11); +define('PHP_SEC', '8.1');  define('EPEL_DEV', 2); // 0 missing, 1 partially populated, 2 mostly full  define('COUNTER', __DIR__ . "/counter.txt");  $osvers = [ -    'RHEL 9'    => ['8.0'], -    'RHEL 8'    => ['7.2','7.3', '7.4'], -    'RHEL 7'    => '5.4', -    'CentOS 9'  => ['8.0'], -    'CentOS 8'  => ['7.2','7.3', '7.4'], -    'CentOS 7'  => '5.4', -    'Fedora 36' => '8.1', -    'Fedora 35' => '8.0', -    'Fedora 34' => '7.4', +    'RHEL 10'   => ['8.3'], +    'RHEL 9'    => ['8.0', '8.1', '8.2', '8.3'], +    'RHEL 8'    => ['7.4', '8.2'], +    'CentOS 10' => ['8.3'], +    'CentOS 9'  => ['8.0', '8.1', '8.2', '8.3'], +    'EL 10'     => ['8.3'], +    'EL 9'      => ['8.0', '8.1', '8.2', '8.3'], +    'EL 8'      => ['7.4', '8.2'], +    'Fedora 43' => '8.4', +    'Fedora 42' => '8.3', +    'Fedora 41' => '8.3',  ];  $osmin = [ +    'RHEL 10'   => '7.4',      'RHEL 9'    => '7.4',      'RHEL 8'    => '5.6', -    'RHEL 7'    => '5.4', +    'CentOS 10' => '7.4',      'CentOS 9'  => '7.4', -    'CentOS 8'  => '5.6', -    'CentOS 7'  => '5.4', -    'Fedora 36' => '7.4', -    'Fedora 35' => '5.6', -    'Fedora 34' => '5.6', +    'EL 10'     => '7.4', +    'EL 9'      => '7.4', +    'EL 8'      => '5.6', +    'Fedora 43' => '7.4', +    'Fedora 42' => '7.4', +    'Fedora 41' => '7.4',  ];  $osminbase = [ +    'RHEL 10'   => '7.4',      'RHEL 9'    => '7.4',      'RHEL 8'    => '7.2', -    'RHEL 7'    => '5.4', +    'CentOS 10' => '7.4',      'CentOS 9'  => '7.4', -    'CentOS 8'  => '7.2', -    'CentOS 7'  => '5.4', -    'Fedora 36' => '7.4', -    'Fedora 35' => '7.4', -    'Fedora 34' => '7.4', +    'EL 10'     => '7.4', +    'EL 9'      => '7.4', +    'EL 8'      => '7.2', +    'Fedora 43' => '7.4', +    'Fedora 42' => '7.4', +    'Fedora 41' => '7.4',  ];  $osmax = [ -    'RHEL 9'    => '8.2', -    'RHEL 8'    => '8.2', -    'RHEL 7'    => '8.2', -    'CentOS 9'  => '8.2', -    'CentOS 8'  => '8.2', -    'CentOS 7'  => '8.2', -    'Fedora 36' => '8.2', -    'Fedora 35' => '8.2', -    'Fedora 34' => '8.1', +    'RHEL 10'   => '8.5', +    'RHEL 9'    => '8.5', +    'RHEL 8'    => '8.5', +    'CentOS 10' => '8.5', +    'CentOS 9'  => '8.5', +    'EL 10'     => '8.5', +    'EL 9'      => '8.5', +    'EL 8'      => '8.5', +    'Fedora 43' => '8.5', +    'Fedora 42' => '8.5', +    'Fedora 41' => '8.5',  ];  $osname = [  	':rhel'     	=> 'Red Hat Enterprise Linux', -		'RHEL 9'    => 'RHEL 9.0', -		'RHEL 8'    => 'RHEL 8.6', -		'RHEL 7'    => 'RHEL 7.9 (maintained until June 2024)', -	':centos'		=> 'CentOS Stream, CentOS Linux, Alma Linux, Rocky Linux and other clones', -		'CentOS 9'  => 'EL 9', -		'CentOS 8'  => 'EL 8', -		'CentOS 7'  => 'EL 7 (maintained until June 2024)', +		'RHEL 10'   => 'RHEL 10.0', //  (maintained until May 31, 2035) +		'RHEL 9'    => 'RHEL 9.6',  //  (maintained until May 31, 2032) +		'RHEL 8'    => 'RHEL 8.10', //  (maintained until May 31, 2029) +	':centos'		=> 'CentOS Stream', +		'CentOS 10' => 'CentOS Stream 10',//  (maintained until May 31, 2030) +		'CentOS 9'  => 'CentOS Stream 9', //  (maintained until May 31, 2027) +	':clone'		=> 'Alma Linux, Rocky Linux and other clones', +		'EL 10'     => 'EL 10', +		'EL 9'      => 'EL 9', +		'EL 8'      => 'EL 8',  	':fedora'		=> 'Fedora Linux', -		'Fedora 36' => 'Fedora 36', -		'Fedora 35' => 'Fedora 35', -		'Fedora 34' => 'Fedora 34', -//		'Fedora 33' => 'Fedora 33 (End of life since November 2022)', +		'Fedora 43' => 'Fedora 43', +		'Fedora 42' => 'Fedora 42', +		'Fedora 41' => 'Fedora 41 (EOL on November 25th, 2025)', +//		'Fedora 40' => 'Fedora 40 (EOL on May 13th, 2025)', +//		'Fedora 39' => 'Fedora 39 (EOL since November 26, 2024)',  ];  $types = [      'base' => 'Default / Single version (simplest way)',      'scl'  => 'Multiple versions simultaneously',  ]; +$arches = [ +	'x86_64'  => 'x86_64', +	'aarch64' => 'aarch64', +	'ppc64le' => 'ppc64le', +	's390x'   => 's390x', +];  $phpvers = [  	// use false when only SCL -	'8.2' => false, +	'8.5' => 'remi-php85', +	'8.4' => 'remi-php84', +	'8.3' => 'remi-php83', +	'8.2' => 'remi-php82',  	'8.1' => 'remi-php81',  	'8.0' => 'remi-php80',      '7.4' => 'remi-php74', @@ -94,24 +116,31 @@ $phpvers = [  ];  $phpname = [  	':devel'  => 'Development version, not ready for production', -		'8.2' => '8.2.0-dev (GA planed for Nov/Dec 2022)', +		'8.5' => '8.5.0RC3 (development version)',  	':stable' => 'Stable versions - usage recommended', -		'8.1' => '8.1.6  (active support until November 2023)', -		'8.0' => '8.0.19 (active support until November 2022)', +		'8.4' => '8.4.14 (active support until November 2026)', +		'8.3' => '8.3.27 (active support until December 2025)',  	':secure' => 'Security only versions', -		'7.4' => '7.4.29 (security only support until November 2022)', +		'8.2' => '8.2.23 (security only support until December 2026)', +		'8.1' => '8.1.33 (security only support until December 2025)',  	':eol'    => 'Deprecated versions - usage discouraged', -		'7.3' => '7.3.33 (no upstream support since December 2021)', -		'7.2' => '7.2.34 (no upstream support since November 2020)', -		'7.1' => '7.1.33 (no upstream support since December 2019)', -		'7.0' => '7.0.33 (no upstream support since December 2018)', -		'5.6' => '5.6.40 (no upstream support since January 2019)', -		'5.5' => '5.5.38 (no upstream support since July 2016)', -		'5.4' => '5.4.45 (no upstream support since September 2015)', +		'8.0' => '8.0.30 (no upstream support since November 2023)', +		'7.4' => '7.4.33 (no upstream support since November 2022)', +		'7.3' => '7.3.33 (no upstream support since December 2021) - EL-8 only', +		'7.2' => '7.2.34 (no upstream support since November 2020) - EL-8 only', +		'7.1' => '7.1.33 (no upstream support since December 2019) - SCL and EL-8 only', +		'7.0' => '7.0.33 (no upstream support since December 2018) - SCL and EL-8 only', +		'5.6' => '5.6.40 (no upstream support since January 2019) - SCL and EL-8 only', +]; +$phptest = [ +//	'8.4' => '8.4.14RC1', +//	'8.3' => '8.3.27RC1',  ]; +  $php  = (isset($_POST['php'])  && isset($phpvers[$_POST['php']]) ? $_POST['php'] : false);  $os   = (isset($_POST['os'])   && isset($osvers[$_POST['os']])   ? $_POST['os'] : false);  $type = (isset($_POST['type']) && isset($types[$_POST['type']])  ? $_POST['type'] : false); +$arch = (isset($_POST['arch']) && isset($arches[$_POST['arch']])  ? $_POST['arch'] : 'x86_64');  ?>  <body> @@ -121,7 +150,7 @@ $type = (isset($_POST['type']) && isset($types[$_POST['type']])  ? $_POST['type'  		</div>  		<p id="prelude">  			<a href="https://blog.remirepo.net/">Blog</a> | -			<a href="https://forum.remirepo.net/">Forum</a> | +			<a href="https://github.com/remicollet/remirepo/issues">Support</a> |  			<a href="https://rpms.remirepo.net/">Repository</a> |  			<a href="https://rpms.remirepo.net/wizard/">Wizard</a>  		</p> @@ -176,6 +205,13 @@ $type = (isset($_POST['type']) && isset($types[$_POST['type']])  ? $_POST['type'  ?>                                          </select>                                      </p></li> +                                    <li><p>Architecture: +                                        <select name='arch' onChange='submit()'> +<?php +                                        foreach($arches as $archref => $name) printf("<option value='%s' %s>%s</option>", $archref, ($archref===$arch ? 'selected' : ''), $name); +?> +                                        </select> +                                    </p></li>                                      </ul>                                      </form>                                      <h2>Wizard answer</h2> @@ -187,15 +223,28 @@ $counter = intval(@file_get_contents(COUNTER));  $err = false;  if ($os) {      list($dist, $ver) = explode(' ', $os, 2);     -    if ($ver == 6) { -        $days = (int)((mktime(0,0,0,11,30,2020) - time()) / (60 * 60 * 24)); -        printf("<li><b>WARNING: %s</b> will reach its <b>end of life</b> in November 2020, in <b>$days days</b>, upgrade is strongly recommended.</li><br />", $os); -    }      if (($dist == 'Fedora' && $ver<=FC_EOL) || ($dist != 'Fedora' && $ver<=EL_EOL)) { -        printf("<li><b>%s</b> has reached its <b>end of life</b>, upgrade is strongly recommended.</li><br />", $os); -    } -    if (($dist == 'Fedora' && $ver>=FC_DEV) || ($dist != 'Fedora' && $ver>=EL_DEV)) { -        printf("<li><b>WARNING: %s</b> is a <b>development</b> version, not ready for production.</li><br />", $os); +        printf("<li><img src='alarm.png'> <b>%s</b> has reached its <b>end of life</b>, upgrade is strongly recommended.</li><br />", $os); + +    } else if (($dist == 'Fedora' && $ver>=FC_DEV) || ($dist != 'Fedora' && $ver>=EL_DEV)) { +        printf("<li><img src='notice.png'> <b>WARNING: %s</b> is a <b>development</b> version, not ready for production.</li><br />", $os); + +    } else if ($ver == 7 || $ver == 41 || ($dist=="CentOS" && $ver == 8)) { +		if ($ver == 41)     $days = mktime(0, 0, 0, 11, 25, 2025); +		else if ($ver == 9) $days = mktime(0, 0, 0,  5, 31, $dist=="CentOS" ? 2027 : 2032); +		else if ($ver == 8) $days = mktime(0, 0, 0,  5, 31, $dist=="CentOS" ? 2024 : 2029); +		else if ($ver == 7) $days = mktime(0, 0, 0,  6, 30, 2024); +		$eol  = date("F Y", $days); +        $days = (int)(($days - time()) / (60 * 60 * 24)); +		$weeks = round($days/7); +		$months = round($days/30); +		if ($months >= 6) { +	        printf("<li><img src='notice.png'> <b>WARNING: %s</b> will reach its <b>end of life</b> in $eol, in <b>$months months</b>, upgrade is heartily recommended.</li><br />", $os); +		} else if ($weeks >= 8) { +	        printf("<li><img src='alarm.png'> <b>WARNING: %s</b> will reach its <b>end of life</b> in $eol, in <b>$weeks weeks</b>, upgrade is strongly recommended.</li><br />", $os); +		} else { +	        printf("<li><img src='alarm.png'> <b>WARNING: %s</b> will reach its <b>end of life</b> in $eol, in <b>$days days</b>, upgrade is urgently recommended.</li><br />", $os); +		}      }  }  if ($php && $os) { @@ -203,30 +252,71 @@ if ($php && $os) {  		$os,  		is_array($osvers[$os]) ? implode(', ', $osvers[$os]) : $osvers[$os]  	); -    if (version_compare($php, '7.4', '<')) { -        printf("<li><b>WARNING</b>, PHP version <b>%s</b> have reached its eod of life, despite packages have security fix, you should consider a maintained version.</li><br />", $php); +    if (version_compare($php, PHP_SEC, '<')) { +        printf("<li><img src='notice.png'> <b>WARNING</b>, PHP version <b>%s</b> have reached its end of life, despite packages have security fixes, you should consider a maintained version.</li><br />", $php);      } +    // else printf("<li>PHP %s is a maintained version (> %s).</li><br />", $php, PHP_SEC); +} + +if ($arch == 'ppc64le' || $arch == 's390x') { +    printf("<li><b>$arch</b> is not planed for now</li><br />"); +	$err =true; + +} else if ($arch == 'aarch64') { +	if ($os && $dist === 'Fedora') { +		if ($ver < 39) { +		    printf("<li><b>aarch64</b> for Fedora $ver is not planed for now</li><br />"); +			$err =true; +		} +	} else if ($os && $ver < 8) { +	    printf("<li><b>aarch64</b> for Enterprise Linux $ver is not planed for now</li><br />"); +		$err =true; +	} else if ($os && $ver == 8) { +		// no older SCLs +		$osmin['RHEL 8'] = $osmin['CentOS 8'] = '7.2'; +	}  } +  if ($php && $os && $type && !$err) { +	$disp = explode(' ', $phpname[$php], 2)[0];      if ($dist == 'Fedora') { -		$mod = ($ver >= 29); +		$mod  = ($ver >= 29); +		$dnf5 = ($ver >= 41);          $yum = 'dnf';          printf("<li>Command to install the Remi repository configuration package:");          printf("<pre>    $yum install https://rpms.remirepo.net/fedora/remi-release-%d.rpm</pre>", $ver);          printf("</li><br />");      } else { -		$mod = ($ver >= 8); +		$mod  = ($ver >= 8); +		$dnf5 = false;  		if ($ver >= 8) {  	        $yum = 'dnf';  		} else {  	        $yum = 'yum';  		} +		switch ($os) { +			case 'RHEL 8': +			case 'RHEL 9': +			case 'RHEL 10': +				printf("<li>Command to enabled the <b>CRB</b> repository:"); +				printf("<pre>    subscription-manager repos --enable codeready-builder-for-rhel-%d-%s-rpms</pre></li><br />", $ver, $arch); +				break; +			case 'CentOS 8': +			case 'CentOS 9': +			case 'CentOS 10': +			case 'EL 8': +			case 'EL 9': +			case 'EL 10': +				printf("<li>Command to enabled the <b>CRB</b> repository:"); +				printf("<pre>    dnf config-manager --set-enabled %s</pre></li><br />", $ver < 9 ? 'powertools' : 'crb'); +				break; +		}  		if ($ver < EL_DEV || EPEL_DEV > 0) { -		    printf("<li>Command to install the EPEL repository configuration package:"); +		    printf("<li>Command to install the <b>EPEL</b> repository configuration package:");  		    printf("<pre>    $yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-%d.noarch.rpm</pre></li><br />", $ver);  		} -        printf("<li>Command to install the Remi repository configuration package:"); +        printf("<li>Command to install the <b>Remi</b> repository configuration package:");          printf("<pre>    $yum install https://rpms.remirepo.net/enterprise/remi-release-%d.rpm</pre>", $ver);          printf("</li><br />"); @@ -269,8 +359,8 @@ if ($php && $os && $type && !$err) {              printf("<li>Sorry, but PHP version older than <b>%s</b> are not available for <b>%s</b>, try multiple versions.</li><br />", $min, $os);          } else { -            if ($dist == 'Fedora' && version_compare($php, $tmp=(is_array($osvers[$os]) ? $osvers[$os][0] : $osvers[$os]), '=')) { -                $repo = 'remi'; +            if ($mod) { +                $repo = 'remi-modular';              } else {                  $repo = $phpvers[$php];              } @@ -278,58 +368,74 @@ if ($php && $os && $type && !$err) {                  printf("<li>Some common <b>dependencies</b> are available in <b>remi-safe</b> repository, which is enabled by default</li><br />");              } else if ($repo != 'remi') {                  printf("<li>Some common <b>dependencies</b> are available in <b>remi</b> repository, which need to be enabled"); -                printf("<pre>    dnf config-manager --set-enabled remi</pre></li><br />"); +				if ($dnf5) { +					printf("<pre>    dnf config-manager setopt remi.enabled=1</pre></li><br />"); +				} else { +					printf("<pre>    dnf config-manager --set-enabled remi</pre></li><br />"); +				}              } -            //if ($dist == 'Fedora' || $yum == 'yum') { -            if ($yum == 'yum') { -                printf("<li>PHP version <b>%s</b> packages are available for <b>%s</b> in <b>%s</b> repository</li><br />", $php, $os, $repo); +            if ($mod) { +                printf("<li>PHP version <b>%s</b> packages are available for <b>%s</b> in <b>remi-modular</b> repository</li><br />", $disp, $os); + +				if ($dnf5) { // dnf v5 have minimal support for modularity https://bugzilla.redhat.com/2305955 +		            printf("<li>You have to enable the module stream for $php:"); +		            printf("<pre>    dnf module reset php</pre>"); +		            printf("<pre>    dnf module enable php:remi-%s</pre>", $php); +		            printf("</li><br />"); + +				    printf("<li>If no version is installed, command to <b>install</b> the php stream default profile:"); +		            printf("<pre>    dnf install php-cli php-fpm php-mbstring php-xml</pre>"); +				    printf("</li><br />"); + +				    printf("<li>If an older version is installed, command to <b>upgrade</b> the php stack:"); +		            printf("<pre>    dnf update</pre>"); +				    printf("</li><br />"); + +				    printf("<li>If an newer version is installed, command to <b>downgrade</b> the php stack:"); +		            printf("<pre>    dnf downgrade php-common</pre>"); +				    printf("</li><br />"); +				} else { +		            printf("<li>Command to enable the module stream for $php, if a version is already installed this will also upgrade/downgrade it:"); +		            printf("<pre>    dnf module switch-to php:remi-%s</pre>", $php); +		            printf("</li><br />"); + +				    printf("<li>If no version is installed, command to <b>install</b> the php stream default profile:"); +		            printf("<pre>    dnf module install php:remi-%s</pre>", $php); +				    printf("</li><br />"); +				} +            } else { +                printf("<li>PHP version <b>%s</b> packages are available for <b>%s</b> in <b>%s</b> repository</li><br />", $disp, $os, $repo);  	            printf("<li>Command to enable the repository:"); -            } -			/* -            if ($dist == 'Fedora') { -                printf("<pre>    dnf config-manager --set-enabled %s</pre></li><br />", $repo); -                if ($mod) { -                    printf("<li>Command to disable the modular repository:"); -                    printf("<pre>    dnf config-manager --set-disabled remi-modular</pre></li><br />"); -                    printf("<li>Alternatively, you may prefer the modern way, by enabling the module stream for $php:"); -                } -            } else -			*/ -			if ($yum == 'yum') { // EL-6, 7 +                  printf("<pre>    yum-config-manager --disable 'remi-php*'");                  printf(   "\n    yum-config-manager --enable   %s</pre></li><br />", $repo);                  printf("<li>You can check the list of the enabled repositories:");                  printf("<pre>    yum repolist</pre></li><br />");                  printf("<li>If the <b>priorities</b> plugin is enabled, ensure %s have higher priority (a lower value) than %s</li><br />", $repo, ($dist == 'Fedora' ? 'fedora' : 'base and updates')); -            } else { // EL-8, module only -                printf("<li>You have to enable the module stream for $php:"); -            } - -            if ($mod) { -                printf("<pre>    dnf module reset php"); -                printf(   "\n    dnf module install php:remi-%s</pre>", $php); -                printf("</li><br />"); -            } -            printf("<li>Command to upgrade (the repository only provides PHP):"); -            printf("<pre>    $yum update</pre>"); -            printf("</li><br />"); +		        printf("<li>If an old version is installed, command to <b>upgrade</b>:"); +		        printf("<pre>    $yum update</pre>"); +		        printf("</li><br />"); -            printf("<li>Command to install <b>additional</b> packages:"); +		        printf("<li>If no version is installed, command to <b>install</b> the php command:"); +		        printf("<pre>    $yum install php-cli</pre>"); +		        printf("</li><br />"); +			} +            printf("<li>Command to install <b>additional</b> packages (xxx for SAPI or extension name):");              printf("<pre>    $yum install php-xxx</pre>");              printf("</li><br />");              if (version_compare($php, '7.0', '>=')) {                  printf("<li>Command to install <b>testing</b> packages:"); -                if ($dist != 'Fedora' && $mod) { -                   printf("<pre>    $yum --enablerepo=remi-modular-test install php-xxx</pre>", $repo); -                } else { -                   printf("<pre>    $yum --enablerepo=%s-test install php-xxx</pre>", $repo); -                } +                printf("<pre>    $yum --enablerepo=%s-test install php-xxx</pre>", $repo);                  printf("</li><br />");              } +			if (isset($phptest[$php])) { +				printf("<li>PHP version <b>%s</b> packages are available in the testing repository.", $phptest[$php]); +				printf("</li><br />"); +			}              printf("<li>Command to check the installed version and available extensions:");              printf("<pre>    php --version\n    php --modules</pre>"); @@ -339,23 +445,27 @@ if ($php && $os && $type && !$err) {          @file_put_contents(COUNTER, "$counter\n");      } else { -        printf("<li>You want <b>multiple versions </b> which means using a <a href='https://www.softwarecollections.org/en/'>Software Collection</a></li><br />"); +        printf("<li>You want <b>multiple versions </b> which means using a Software Collection (SCL)</li><br />"); +        printf("<li>Installation of a <b>default</b> version is recommended, using SCL only for additional versions</li><br />");          $scl='php'.str_replace('.', '', $php); + +		echo "<li><p><img src='info.png'> <b>Tips</b>: For Software Collection usage read: "; +		echo "<a href='https://blog.remirepo.net/post/2022/02/17/My-PHP-Workstation'>My PHP Workstation</a></p><br /></li>";          if (version_compare($php, $osmax[$os], '>')) { -            printf("<li>Sorry, but PHP version greater than <b>%s</b> are not available for <b>%s</b>.</li><br />", $osmax[$os], $os); +            printf("<li>Sorry, but PHP version greater than <b>%s</b> are not available for <b>%s</b> (%s).</li><br />", $osmax[$os], $os, $arch);          } else if (version_compare($php, $osmin[$os], '<')) { -            printf("<li>Sorry, but PHP version older than <b>%s</b> are not available for <b>%s</b>.</li><br />", $osmin[$os], $os); +            printf("<li>Sorry, but PHP version older than <b>%s</b> are not available for <b>%s</b> (%s).</li><br />", $osmin[$os], $os, $arch);          } else {              if (!$phpvers[$php]) { -                printf("<li><b>WARNING</b>: PHP version <b>%s</b> is a <b>development</b> version, not ready for production.</li><br />", $php); +                printf("<li><img src='alarm.png'> <b>WARNING</b>: PHP version <b>%s</b> is a <b>development</b> version, not ready for production.</li><br />", $php);              }              if ($dist=='Fedora') {                  $repo = 'remi'; //($phpvers[$php] ? 'remi' : 'remi-test'); // Dev version                  printf("<li>Some common <b>dependencies</b> are available in <b>remi</b> repository, which need to be enabled");                  printf("<pre>    dnf config-manager --set-enabled remi</pre></li><br />"); -                printf("<li>The <b>%s</b> collection is available in the <b>$repo</b> repository</li><br />", $scl); +                printf("<li>The <b>%s</b> collection is available in the <b>$repo</b> repository, and provides PHP version <b>%s</b></li><br />", $scl, $disp);                  printf("<li>Command to install:");                  printf("<pre>    $yum install %s</pre>", $scl);                  printf("</li><br />"); @@ -378,6 +488,10 @@ if ($php && $os && $type && !$err) {                  printf("<pre>    $yum --enablerepo=remi-test install %s-php-xxx</pre>", $scl);                  printf("</li><br />");              } +			if (isset($phptest[$php])) { +				printf("<li>PHP version <b>%s</b> packages are available in the testing repository.", $phptest[$php]); +				printf("</li><br />"); +			}              printf("<li>Command to check the installed version and available extensions:");              printf("<pre>    %s --version\n    %s --modules</pre>", $scl, $scl); @@ -391,16 +505,16 @@ if ($php && $os && $type && !$err) {          @file_put_contents(COUNTER, "$counter\n");      }  } else if (!$os) { -    echo "<li><p>Please select the operating system you are running.</p></li>"; -    echo "<li><p><b>Tips</b>: check the content of /etc/redhat-release.</p></li>"; +	echo "<li><p><img src='question.png'> Please select the operating system you are running.</p></li>"; +	echo "<li><p><img src='info.png'> <b>Tips</b>: check the content of /etc/redhat-release.</p></li>";  } else if (!$php) { -    echo "<li><p>Please select PHP version you want to use.</p></li>"; -	echo "<li><p><b>Tips</b>: read: <a href='https://www.php.net/supported-versions.php'>PHP Supported Versions</a></li>"; +	echo "<li><p><img src='question.png'> Please select PHP version you want to use.</p></li>"; +	echo "<li><p><img src='info.png'> <b>Tips</b>: read: <a href='https://www.php.net/supported-versions.php'>PHP Supported Versions</a></li>";  } else if (!$err) { -    echo "<li><p>Please select installation type</p></li>"; -    echo "<li><p><b>Tips</b>: read the <a href='https://blog.remirepo.net/pages/English-FAQ#scl'>FAQ</a></p></li>"; +	echo "<li><p><img src='question.png'> Please select installation type</p></li>"; +	echo "<li><p><img src='info.png'> <b>Tips</b>: read the <a href='https://blog.remirepo.net/pages/English-FAQ#scl'>FAQ</a></p></li>";  }  ?>                                      </ul> @@ -411,14 +525,16 @@ if ($php && $os && $type && !$err) {  				<ul class="levbarlist">  					<li><a href="https://blog.remirepo.net/pages/Config-en" class="nlink" title="Repository configuration">Repository configuration</a></li>  					<li><a href="https://blog.remirepo.net/pages/English-FAQ"  class="nlink" title="F.A.Q.">F.A.Q.</a></li> -					<li><a href="https://forum.remirepo.net/"  class="nlink" title="Forum">Forum</a></li>  					<li><a href="https://github.com/remicollet/remirepo/issues"  class="nlink" title="Bug tracker">Bug tracker</a></li>  					<li><a href="https://blog.remirepo.net/post/2021/05/20/remirepo-IRC-channel-on-Libera-network"  class="nlink" title="IRC channel">IRC channel</a></li> -					<li><a href='https://twitter.com/RemiRepository'>Repository twitter account</a></li> -					<li><?php -					printf("<b>%d answers</b> given", $counter); +					<li><a href='https://bsky.app/profile/remirepo.net'>@remirepo.net</a> on <b>BlueSky</b></li> +					<li><a href='https://discord.gg/qwC6kM2dcE'>Discord server</a></li> +<!--					<li><?php +					$day  = (time() - mktime(0,0,0,12,8,2015)) / 86400; +					$rate = $counter / $day; +					printf("<b>%d answers</b> given since Dec 2015<br><b>%d answers</b> per day", $counter, $rate);  					?></li> -				</ul><br /><br /><br /> +-->				</ul><br /><br /><br />  <form action="https://www.paypal.com/cgi-bin/webscr" method="post"><div>  <input type="hidden" name="cmd" value="_s-xclick" />  <input type="hidden" name="encrypted" value="-----BEGIN PKCS7-----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-----END PKCS7----- | 
