mirror of
				https://github.com/shivammathur/setup-php.git
				synced 2025-10-31 23:36:21 +07:00 
			
		
		
		
	Add support for update and extension versions
This commit is contained in:
		| @ -1,79 +0,0 @@ | ||||
| linux_extension_dir() { | ||||
|   apiv=$1 | ||||
|   if [ "$version" = "5.3" ]; then | ||||
|     echo "/home/runner/php/5.3.29/lib/php/extensions/no-debug-non-zts-$apiv" | ||||
|   elif [[ "$version" =~ $old_versions_linux ]]; then | ||||
|     echo "/usr/lib/php5/$apiv" | ||||
|   elif [ "$version" = "8.0" ]; then | ||||
|     echo "/home/runner/php/8.0/lib/php/extensions/no-debug-non-zts-$apiv" | ||||
|   else | ||||
|     echo "/usr/lib/php/$apiv" | ||||
|   fi | ||||
| } | ||||
|  | ||||
| darwin_extension_dir() { | ||||
|   apiv=$1 | ||||
|   if [[ "$version" =~ $old_versions_darwin ]]; then | ||||
|     echo "/opt/local/lib/php${version/./}/extensions/no-debug-non-zts-$apiv" | ||||
|   else | ||||
|     echo "/usr/local/lib/php/pecl/$apiv" | ||||
|   fi | ||||
| } | ||||
|  | ||||
| get_apiv() { | ||||
|   case $version in | ||||
|     5.3) | ||||
|       echo "20090626" | ||||
|       ;; | ||||
|     5.4) | ||||
|       echo "20100525" | ||||
|       ;; | ||||
|     5.5) | ||||
|       echo "20121212" | ||||
|       ;; | ||||
|     5.6) | ||||
|       echo "20131226" | ||||
|       ;; | ||||
|     7.0) | ||||
|       echo "20151012" | ||||
|       ;; | ||||
|     7.1) | ||||
|       echo "20160303" | ||||
|       ;; | ||||
|     7.2) | ||||
|       echo "20170718" | ||||
|       ;; | ||||
|     7.3) | ||||
|       echo "20180731" | ||||
|       ;; | ||||
|     *) | ||||
|       if [ "$version" = "8.0" ]; then | ||||
|         php_h="https://raw.githubusercontent.com/php/php-src/master/main/php.h" | ||||
|       else | ||||
|         semver=$(curl -sSL --retry 5 https://github.com/php/php-src/releases | grep "$flags" "(php-$version.[0-9]+)".zip | head -n 1 | grep "$flags" '[0-9]+\.[0-9]+\.[0-9]+') | ||||
|         php_h="https://raw.githubusercontent.com/php/php-src/PHP-$semver/main/php.h" | ||||
|       fi | ||||
|       curl -sSL --retry 5 "$php_h" | grep "PHP_API_VERSION" | cut -d' ' -f 3 | ||||
|       ;; | ||||
|   esac | ||||
| } | ||||
|  | ||||
| version=$2 | ||||
| old_versions_linux="5.[4-5]" | ||||
| old_versions_darwin="5.[3-5]" | ||||
| os=$(uname -s) | ||||
| if [ "$os" = "Linux" ]; then | ||||
|   flags='-Po' | ||||
|   apiv=$(get_apiv) | ||||
|   dir=$(linux_extension_dir "$apiv") | ||||
|   sudo mkdir -p "$dir" && sudo chown -R "$USER":"$(id -g -n)" $(dirname "$dir") | ||||
| elif [ "$os" = "Darwin" ]; then | ||||
|   flags='-Eo' | ||||
|   apiv=$(get_apiv) | ||||
|   dir=$(darwin_extension_dir "$apiv") | ||||
| else | ||||
|   dir='C:\\tools\\php\\ext' | ||||
| fi | ||||
| hash=$(echo -n "$1" | openssl dgst -sha256 | cut -d ' ' -f 2) | ||||
| echo "::set-output name=ext_dir::$dir" | ||||
| echo "::set-output name=ext_hash::$hash" | ||||
| @ -24,11 +24,12 @@ update_ppa() { | ||||
|     else | ||||
|       ppa="ondrej-ubuntu-php*.list" | ||||
|     fi | ||||
|     find /etc/apt/sources.list.d -type f -name "$ppa" -exec sudo DEBIAN_FRONTEND=noninteractive apt-fast update -o Dir::Etc::sourcelist="{}" ';' >/dev/null 2>&1 | ||||
|     find /etc/apt/sources.list.d -type f -name "$ppa" -exec sudo "$debconf_fix" apt-fast update -o Dir::Etc::sourcelist="{}" ';' >/dev/null 2>&1 | ||||
|     echo "true" | ||||
|   fi | ||||
| } | ||||
|  | ||||
| # Function to configure PECL | ||||
| configure_pecl() { | ||||
|   if [ "$pecl_config" = "false" ] && [ -e /usr/bin/pecl ]; then | ||||
|     for tool in pear pecl; do | ||||
| @ -247,7 +248,8 @@ ppa_updated="false" | ||||
| pecl_config="false" | ||||
| version=$1 | ||||
| old_versions="5.[4-5]" | ||||
| apt_install="sudo DEBIAN_FRONTEND=noninteractive apt-fast install -y" | ||||
| debconf_fix="DEBIAN_FRONTEND=noninteractive" | ||||
| apt_install="sudo $debconf_fix apt-fast install -y" | ||||
| existing_version=$(php-config --version | cut -c 1-3) | ||||
|  | ||||
| # Setup PHP | ||||
| @ -267,33 +269,37 @@ if [ "$existing_version" != "$version" ]; then | ||||
|       fi | ||||
|       $apt_install php"$version" php"$version"-curl php"$version"-mbstring php"$version"-xml >/dev/null 2>&1 | ||||
|     fi | ||||
|     status="installed" | ||||
|     status="Installed" | ||||
|   else | ||||
|     status="switched" | ||||
|     if [ "$update" = "true" ]; then | ||||
|       $apt_install php"$version" >/dev/null 2>&1 | ||||
|       status="Updated to" | ||||
|     else | ||||
|       status="Switched to" | ||||
|     fi | ||||
|   fi | ||||
|  | ||||
|   # PHP 5.3 is switched by install script, for rest switch_version | ||||
|   if [ "$version" != "5.3" ]; then | ||||
|     switch_version | ||||
|   fi | ||||
|  | ||||
|   if [ "$version" = "8.0" ]; then | ||||
|     semver=$(php -v | head -n 1 | cut -f 2 -d ' ') | ||||
|   else | ||||
|     semver=$(php -v | head -n 1 | cut -f 2 -d ' ' | cut -f 1 -d '-') | ||||
|   fi | ||||
|  | ||||
|   if [ "$status" != "switched" ]; then | ||||
|     status="Installed PHP $semver" | ||||
|   else | ||||
|     status="Switched to PHP $semver" | ||||
|   fi | ||||
| else | ||||
|   semver=$(php -v | head -n 1 | cut -f 2 -d ' ' | cut -f 1 -d '-') | ||||
|   status="PHP $semver Found" | ||||
|   if [ "$update" = "true" ]; then | ||||
|     $apt_install php"$version" >/dev/null 2>&1 | ||||
|     status="Updated to" | ||||
|   else | ||||
|     status="Found" | ||||
|   fi | ||||
| fi | ||||
|  | ||||
| semver=$(php -v | head -n 1 | cut -f 2 -d ' ') | ||||
| if [ ! "$version" = "8.0" ]; then | ||||
|   semver=$(echo "$semver" | cut -f 1 -d '-') | ||||
| fi | ||||
|  | ||||
| ini_file=$(php --ini | grep "Loaded Configuration" | sed -e "s|.*:s*||" | sed "s/ //g") | ||||
| ext_dir=$(php -i | grep "extension_dir => /" | sed -e "s|.*=> s*||") | ||||
| scan_dir=$(php --ini | grep additional | sed -e "s|.*: s*||") | ||||
| sudo chmod 777 "$ini_file" | ||||
| add_log "$tick" "PHP" "$status" | ||||
| add_log "$tick" "PHP" "$status PHP $semver" | ||||
|  | ||||
| @ -31,7 +31,12 @@ Function Add-Extension { | ||||
|     [ValidateNotNull()] | ||||
|     [ValidateSet('stable', 'beta', 'alpha', 'devel', 'snapshot')] | ||||
|     [string] | ||||
|     $mininum_stability = 'stable' | ||||
|     $mininum_stability = 'stable', | ||||
|     [Parameter(Position = 2, Mandatory = $false)] | ||||
|     [ValidateNotNull()] | ||||
|     [ValidatePattern('^\d+(\.\d+){0,2}$')] | ||||
|     [string] | ||||
|     $extension_version = '' | ||||
|   ) | ||||
|   try { | ||||
|     $extension_info = Get-PhpExtension -Path $php_dir | Where-Object { $_.Name -eq $extension -or $_.Handle -eq $extension } | ||||
| @ -50,7 +55,7 @@ Function Add-Extension { | ||||
|       } | ||||
|     } | ||||
|     else { | ||||
|       Install-PhpExtension -Extension $extension -MinimumStability $mininum_stability -Path $php_dir | ||||
|       Install-PhpExtension -Extension $extension -MinimumStability $mininum_stability -Version $extension_version -Path $php_dir | ||||
|       Add-Log $tick $extension "Installed and enabled" | ||||
|     } | ||||
|   } | ||||
| @ -192,8 +197,10 @@ if ($null -eq $installed -or -not("$($installed.Version).".StartsWith(($version | ||||
|  | ||||
|   Install-Php -Version $version -Architecture $arch -ThreadSafe $ts -InstallVC -Path $php_dir -TimeZone UTC -InitialPhpIni Production -Force >$null 2>&1 | ||||
| } else { | ||||
|   $updated = Update-Php $php_dir >$null 2>&1 | ||||
|   if($updated -eq $False) { | ||||
|   if((Test-Path env:update) -and $env:update -eq 'true') { | ||||
|     Update-Php $php_dir > $null 2>&1 | ||||
|     $status = "Updated to" | ||||
|   } else { | ||||
|     $status = "Found" | ||||
|   } | ||||
| } | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 Shivam Mathur
					Shivam Mathur