programing

명령줄 ubuntu 16.04에서 php 버전 전환

yoursource 2023. 1. 25. 08:54
반응형

명령줄 ubuntu 16.04에서 php 버전 전환

Ubuntu 16.04에 php 5.6 및 php 7.1을 설치했습니다.

Apache를 웹 서버로 사용하면

a2enmod php5.6 #to enable php5
a2enmod php7.1 #to enable php7

Apache 모듈에서 php7.1을 비활성화하고 php 5.6을 활성화하면 Apache는 변경을 인식하고 예상대로 php 5.6 인터프리터를 사용합니다.

그러나 명령줄에서 내부 php 웹 서버를 실행하면 다음과 같습니다.

php -S localhost:8888

php는 php 7을 사용하여 요청을 처리합니다.그러면 명령줄에서 php 5.6과 ph 7.1을 어떻게 바꾸면 될까요?

인터랙티브 스위칭모드

sudo update-alternatives --config php
sudo update-alternatives --config phar
sudo update-alternatives --config phar.phar

수동 전환

PHP 5.6 => PHP 7.1부터

기본 PHP 5.6이 시스템에 설정되어 있으므로 PHP 7.1로 전환해야 합니다.

Apache:

$ sudo a2dismod php5.6
$ sudo a2enmod php7.1
$ sudo service apache2 restart

명령줄:

$ sudo update-alternatives --set php /usr/bin/php7.1
$ sudo update-alternatives --set phar /usr/bin/phar7.1
$ sudo update-alternatives --set phar.phar /usr/bin/phar.phar7.1

PHP 7.1 => PHP 5.6부터

시스템에 기본 PHP 7.1이 설정되어 있으므로 PHP 5.6으로 전환해야 합니다.

Apache:

$ sudo a2dismod php7.1
$ sudo a2enmod php5.6
$ sudo service apache2 restart

명령줄:

$ sudo update-alternatives --set php /usr/bin/php5.6

원천

$ sudo update-alternatives --config php

16.04(18.0420.04) 이후의 모든 ubuntu 버전에서 동작합니다.

이것은 응답으로 볼 수 있는 것입니다.

There are 4 choices for the alternative php (providing /usr/bin/php).

  Selection    Path             Priority   Status
------------------------------------------------------------
* 0            /usr/bin/php7.2   72        auto mode
  1            /usr/bin/php5.6   56        manual mode
  2            /usr/bin/php7.0   70        manual mode
  3            /usr/bin/php7.1   71        manual mode
  4            /usr/bin/php7.2   72        manual mode
Press <enter> to keep the current choice[*], or type selection number:

적절한 버전을 선택합니다.

사용 가능한 모든 버전을 나열하고 그 중에서 선택하려면:

sudo update-alternatives --config php

또는 수동으로 실행한다.

sudo a2dismod php7.1 // disable
sudo a2enmod php5.6  // enable

ubuntu 20.04전환PHP 8.0그리고.PHP 7.4버전:

다운그레이드 PHP 8.0로.PHP 7.4

sudo a2dismod php8.0
sudo a2enmod php7.4
sudo service apache2 restart
sudo update-alternatives --config php
sudo update-alternatives --config phar
sudo update-alternatives --config phar.phar
sudo service apache2 restart

개선하다 PHP 7.4로.PHP 8.0

sudo a2dismod php7.4
sudo a2enmod php8.0
sudo service apache2 restart
sudo update-alternatives --config php
sudo update-alternatives --config phar
sudo update-alternatives --config phar.phar
sudo service apache2 restart

변경을 확인합니다.

  1. 달려.php -v다음과 같이 표시됩니다.

PHP 8.0.3 (cli) (빌드: 2021년 3월 5일 07:54:13) (NTS) 저작권 (c) PHP Group Zend Engine v4.0.3, Copyright (c) Zend Technologies by Zend OPCache v8.0.3, Copyright (c)

또는

PHP 7.4.16 (cli) (빌드: 2021년 3월 5일 07:54:38) (NTS) 저작권 (c) PHP Group Zend Engine v3.4.0, Copyright (c) Zend Technologies with Zend OPCache v7.4.16, Copyright (c)

  1. 실행 가능한 로컬 환경에 PHP 파일을 추가합니다./var/www/html/추가에 의한 경로phpinfo();브라우저에서 PHP 정보를 가져옵니다(페이지 상단에 PHP 버전이 있습니다).

이거 드셔보세요

php5.6에서 php7.1로

sudo a2dismod php5.6
sudo a2enmod php7.1
sudo service apache2 restart

sudo update-alternatives --set php /usr/bin/php7.1
sudo update-alternatives --set phar /usr/bin/phar7.1
sudo update-alternatives --set phar.phar /usr/bin/phar.phar7.1

php7.1에서 php5.6으로

sudo a2dismod php7.1
sudo a2enmod php5.6
sudo service apache2 restart

sudo update-alternatives --set php /usr/bin/php5.6
sudo update-alternatives --set phar /usr/bin/phar5.6
sudo update-alternatives --set phar.phar /usr/bin/phar.phar5.6

저는 사실 이 제품을 사용하는 것을 추천하지 않습니다.a2enmodphp 5 또는 7의 경우.나는 사용할 것이다.update-alternatives.할수있습니다sudo update-alternatives --config php사용할 PHP의 시스템 전체 버전을 설정합니다.그러면 명령줄 및 Apache 버전이 동일하게 작동합니다.에 대한 자세한 내용을 참조해 주세요.update-alternatives맨 페이지에 있습니다.

버전으로부터 전환하는 스크립트를 작성할 수 있습니다.sudo nano switch_php다음과 같이 입력합니다.

#!/bin/sh
#!/bin/bash
echo "Switching to PHP$1..."
case $1 in
    "7")
        sudo a2dismod php5.6
        sudo a2enmod php7.0
        sudo service apache2 restart
        sudo ln -sfn /usr/bin/php7.0 /etc/alternatives/php;;
    "5.6")
        sudo a2dismod php7.0
        sudo a2enmod php5.6
        sudo service apache2 restart
        sudo ln -sfn /usr/bin/php5.6 /etc/alternatives/php;;
esac
echo "Current version: $( php -v | head -n 1 | cut -c-7 )"

종료 후 저장하여 실행 가능한 상태로 만듭니다.sudo chmod +x switch_php

To execute the script just type 스크립트를 실행하려면 다음과 같이 입력합니다../switch_php [VERSION_NUMBER]매개 변수는 7 또는 5.6 μ μ μ μ μ μ μm이다.

이것으로 PHP7에서 PHP 5.6으로 쉽게 전환할 수 있습니다!

시스템에 PHP 5.6과 같은 오래된 버전의 PHP가 있고, PHP 7.2도 설치했으므로 여러 PHP가 시스템에 있을 수 있습니다.오래된 PHP 5.6이 최신 버전일 때 개발된 어플리케이션도 있고, 아직 가동 중이고, 그 어플리케이션에서 작업하고 있는 어플리케이션도 있습니다.동시에 Laravel에서 작업을 하고 있을지도 모르지만, Laravel을 시작하려면 PHP 7+가 필요합니다.무슨 말인지 알겠어요?

이 경우 요구에 맞게 PHP 버전을 전환할 수 있습니다.

PHP 5.6 => PHP 7.2에서 전환

Apache:-

sudo a2dismod php5.6
sudo a2enmod php7.2
sudo service apache2 restart

명령줄:-

sudo update-alternatives --set php /usr/bin/php7.2
sudo update-alternatives --set phar /usr/bin/phar7.2
sudo update-alternatives --set phar.phar /usr/bin/phar.phar7.2
sudo update-alternatives --set phpize /usr/bin/phpize7.2
sudo update-alternatives --set php-config /usr/bin/php-config7.2

또한 PHP 7.2에서 전환 => PHP 5.6

Apache:-

sudo a2dismod php7.2
sudo a2enmod php5.6
sudo service apache2 restart

명령줄:-

sudo update-alternatives --set php /usr/bin/php5.6
sudo update-alternatives --set phar /usr/bin/phar5.6
sudo update-alternatives --set phar.phar /usr/bin/phar.phar5.6
sudo update-alternatives --set phpize /usr/bin/phpize5.6
sudo update-alternatives --set php-config /usr/bin/php-config5.6

다음 명령줄을 사용하여 두 PHP 버전 간에 전환할 수 있습니다.

예.

꾸 다 고 i to want switch?PHP Version부에서7.1 to 로.7.2 we can use below command아래 명령어를 사용할 수 있습니다.

sudo a2dismod php7.1 &&  sudo update-alternatives --set php /usr/bin/php7.2 && sudo a2enmod php7.2 && sudo service apache2 restart

a2dismod is use to disable the current php version and 현재 php 버전을 비활성화하기 위해 사용합니다.a2enmod는, 버전 「」을 하게 하기 합니다.

이건 내게 효과가 있었어:-

sudo update-alternatives --set php /usr/bin/php7.4

PHP 버전을 필요한 버전으로 변경해 주세요.ph7.4로 변경했습니다.

단말기에 지정된 명령을 입력합니다.

선택한 PHP 버전을 비활성화하려면...

    • sudo a2dismod php5
    • sudo 서비스 apache2 재시작
  1. 다른 PHP 버전을 활성화하려면...

    • sudo a2enmod php5.6
    • sudo 서비스 apache2 재시작

PHP 버전을 업그레이드합니다.버전을 다운그레이드 하려면 PHP_INFO()로 확인할 수 있습니다.

다음을 사용하여 PHP 5.6에서 PHP 7.2로 전환:

sudo a2dismod php5.6 && sudo a2enmod php7.2 && sudo service apache2 restart

다음을 사용하여 PHP 7.2에서 PHP 5.6으로 전환:

sudo a2dismod php7.2 && sudo a2enmod php5.6 && sudo service apache2 restart

Ubuntu 16.04 LTS에서 사용하도록 특별히 설계된 이러한 오픈 소스 PHP 스위치 스크립트를 사용할 수 있습니다.

https://github.com/rapidwebltd/php-switch-scripts

게 요.setup.sh스크립트에서는, PHP 5.6, 7.0, 7.1, 및 7.2 에 필요한 의존 관계를 모두 인스톨 합니다.이 작업이 완료되면 다음 스위치 스크립트 중 하나를 실행하여 PHP CLI 및 Apache 2 모듈 버전을 변경할 수 있습니다.

./switch-to-php-5.6.sh
./switch-to-php-7.0.sh
./switch-to-php-7.1.sh
./switch-to-php-7.2.sh

Ubuntu에서 다른 PHP 버전을 전환하기 위한 bash 스크립트를 만들었습니다.

도움이 됐으면 좋겠는데

스크립트는 다음과 같습니다(/usr/local/bin/sphp.sh에 저장합니다.sudo chmod +x /usr/local/bin/sphp.sh 명령을 사용하여 +x 플래그를 추가하는 것을 잊지 마십시오).

#!/bin/bash

# Usage
if [ $# -ne 1 ]; then
  echo "Usage: sphp [phpversion]"
  echo "Example: sphp 7.2"
  exit 1
fi

currentversion="`php -r \"error_reporting(0); echo str_replace('.', '', substr(phpversion(), 0, 3));\"`"
newversion="$1"

majorOld=${currentversion:0:1}
minorOld=${currentversion:1:1}
majorNew=${newversion:0:1}
minorNew=${newversion:2:1}

if [ $? -eq 0 ]; then
  if [ "${newversion}" == "${currentversion}" ]; then
    echo "PHP version [${newversion}] is already being used"
    exit 1
  fi

  echo "PHP version [$newversion] found"
  echo "Switching from [php${currentversion}] to [php${newversion}] ... "

  printf "a2dismod php$majorOld.$minorOld ... "
  sudo a2dismod "php${majorOld}.${minorOld}"
  printf "[OK] and "

  printf "a2enmod php${newversion} ... "
  sudo a2enmod "php${majorNew}.${minorNew}"
  printf "[OK]\n"

  printf "update-alternatives ... "
  sudo update-alternatives --set php "/usr/bin/php${majorNew}.${minorNew}"
  printf "[OK]\n"

  sudo service apache2 restart
  printf "[OK] apache2 restarted\n"
else
  echo "PHP version $majorNew.$minorNew was not found."
  echo "Try \`sudo apt install php@${newversion}\` first."
  exit 1
fi

echo "DONE!"

PHP 5.6 => PHP 7.1부터

$ sudo a2dismod php5.6
$ sudo a2enmod php7.1

이전 버전의 Linux용

 $ sudo service apache2 restart

보다 최신 버전의 경우

$ systemctl restart apache2

아래 스크립트를 사용하여 PHP 버전 간에 쉽게 전환할 수 있습니다. phpize 구성도 포함되어 있습니다.

https://github.com/anilkumararumulla/switch-php-version

스크립트 파일을 다운로드하여 실행합니다.

sh switch.sh

Ubuntu 18.04 에 larabel 을 인스톨 할 때는, 디폴트 PHP 7.3.0 으로 해 주세요.RC3 설치가 선택되었지만 larabel 및 symfony가 제대로 설치되지 않고 missin php-xml 및 php-zip에 대해 불평합니다.위의 절차에 따라 php 7.1로 전환해야 합니다.

 sudo update-alternatives --set php /usr/bin/php7.1

이제 새로운 블로그를 실행하면 올바르게 진행됩니다.

다음의 순서에 따라 주세요.

i.e : your current version is : current_version = 7.3 , and you want to change it to : new_version = 7.2

1) sudo a2dismod php(current_version) 
2) sudo a2enmod php(new_version)
3) sudo update-alternatives --config php (here you need to select php version number) 
4) restart apache through : 
  sudo /etc/init.d/apache2 restart OR
  sudo service apache2 restart

언급URL : https://stackoverflow.com/questions/42619312/switch-php-versions-on-commandline-ubuntu-16-04

반응형