> 백엔드 개발 > PHP 문제 > php -v 및 phpinfo()의 PHP 버전 출력이 일치하지 않는 이유는 무엇입니까?

php -v 및 phpinfo()의 PHP 버전 출력이 일치하지 않는 이유는 무엇입니까?

藏色散人
풀어 주다: 2023-03-04 14:14:01
원래의
4603명이 탐색했습니다.

시스템과 함께 제공되는 PHP 버전과 새로 설치된 PHP 고급 버전이 동시에 존재하기 때문에 PHP 버전이 일치하지 않으며, 터미널과 phpinfo에서 로드되는 파일의 위치가 일치하지 않습니다. 해결 방법은 다음과 같습니다. 높은 버전의 PHP 설치 디렉터리에서 높은 버전의 "php-fpm" 설치 디렉터리도 터미널 구성 파일에 추가됩니다.

php -v 및 phpinfo()의 PHP 버전 출력이 일치하지 않는 이유는 무엇입니까?

추천: "PHP Video Tutorial"

문제는 시스템 자체 PHP 버전과 새로 설치된 PHP Advanced 버전이 공존하고, 터미널과 phpinfo()에서 로드하는 파일 위치가 일치하지 않는다는 것입니다.

그 중

nginx 서비스에서 phpinfo()를 구문 분석하는 것은 php-fpm에 의존하므로 phpinfo()의 출력은 php-fpm에 의해 시작된 버전입니다.

그리고 터미널 실행은 php -v; >는 터미널 구성 파일에 설정된 PHP 설치 디렉터리에 해당하는 PHP 버전을 로드합니다. php -v是加载终端配置文件中设置的php安装目录对应的php版本的;

所以导致两者php版本不一致主要就是启动的php-fpm版本和终端配置的php版本不一致

直接的解决办法就是将高版本php安装目录下的高版本php-fpm安装目录也加到终端配置文件,让系统自动加载高版本php-fpm即可。

快速解决:

配置~/.bash_profile:

export PATH=/usr/local/Cellar/php@7.2/7.2.23/bin:/usr/local/Cellar/php@7.2/7.2.23/sbin:${PATH}
로그인 후 복사
로그인 후 복사

如果系统使用的是zsh,就在~/.zshrc文件最后添加:

source ~/.bash_profile
로그인 후 복사
로그인 후 복사

然后再执行

source ~/.zshrc
로그인 후 복사

使配置生效,并重启php-fpm

sudo killall php-fpm
로그인 후 복사
로그인 후 복사
sudo php-fpm -D
로그인 후 복사
로그인 후 복사

即可

具体过程:

1、查看当前php版本

php -v
로그인 후 복사

得到以下输出:

PHP 7.2.23 (cli) (built: Oct 10 2019 10:15:26) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.2.23, Copyright (c) 1999-2018, by Zend Technologies
로그인 후 복사

2、查看php安装位置

which php
로그인 후 복사

whereis php
로그인 후 복사

得到以下输出:

/usr/local/Cellar/php@7.2/7.2.23/bin/php
로그인 후 복사

3、查看php-fpm 版本和安装位置

php-fpm -v
로그인 후 복사

得到以下输出:

PHP 5.6.30 (fpm-fcgi) (built: Oct 29 2017 20:31:21)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
로그인 후 복사
which php-fpm
로그인 후 복사

得到以下输出:

/usr/sbin/php-fpm
로그인 후 복사

以上查看一遍后,发现php加载的安装目录是新安装的php高级版本,而php-fpm 还是mac系统自带的低版本,原因是在系统终端配置文件中配置了新版本php安装位置,但是没有配置php-fpm的安装位置,导致启动php-fpm时自动加载的是系统低版本的php-fpm,当php框架依赖高版本php时,就会无法运行。

4、配置新版本php-fpm加载目录

配置~/.bash_profile

export PATH=/usr/local/Cellar/php@7.2/7.2.23/bin:/usr/local/Cellar/php@7.2/7.2.23/sbin:${PATH}
로그인 후 복사
로그인 후 복사

如果系统使用的是zsh,就在~/.zshrc文件最后添加:

source ~/.bash_profile
로그인 후 복사
로그인 후 복사

或直接将上述路径配置设置在~/.zshrc文件中。

然后执行source ~/.zshrc

그래서 두 PHP 버전 간의 불일치의 주요 원인은 시작된 php-fpm 버전이 PHP 버전과 일치하지 않는다는 것입니다. 터미널에서 구성됩니다.

직접적인 해결책은 높은 버전의 php 설치 디렉터리 아래에 높은 버전의 php-fpm 설치 디렉터리를 터미널 구성 파일에 추가하고 시스템이 자동으로 높은 버전의 php-fpm을 로드하도록 하는 것입니다.

빠른 해결 방법:

Configuration~/.bash_profile:

(base)  qingshan@qingshan  ~  php-fpm -v
PHP 7.2.23 (fpm-fcgi) (built: Oct 10 2019 10:15:34)
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.2.23, Copyright (c) 1999-2018, by Zend Technologies
로그인 후 복사

시스템에서 zsh를 사용하는 경우 ~/.zshrc</code 끝 부분에 있습니다. > 파일 추가: <p><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">sudo killall php-fpm</pre><div class="contentsignin">로그인 후 복사</div></div><div class="contentsignin">로그인 후 복사</div></div></p> 그런 다음 <p><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">sudo php-fpm -D</pre><div class="contentsignin">로그인 후 복사</div></div><div class="contentsignin">로그인 후 복사</div></div>를 실행하여 구성을 적용하고 php-fpm<p>rrreeerrreee</p>을 다시 시작합니다. 그게 다입니다<p></p> <h3 id="Specific process:">특정 프로세스:</h3> <img src="https://img.php.cn/upload/article/000/000/020/eaf8180b55d6ddf4760f15b90b8e8426-0.png" alt="" loading="lazy">1. 현재 PHP 버전 rrreee🎜다음 출력을 가져옵니다.🎜rrreee🎜2. PHP 설치 위치를 확인하세요🎜rrreee🎜 또는 🎜rrreee🎜다음 출력을 가져옵니다.🎜rrreee🎜3.php-fpm 버전과 설치 위치를 확인하세요🎜rrreee. 🎜다음 출력을 얻습니다.🎜rrreeerrreee🎜 다음 출력을 얻습니다. 🎜rrreee🎜위를 확인한 결과 php에서 로드한 설치 디렉터리는 새로 설치된 php의 고급 버전이고 php-fpm은 여전히 ​​그 하위 버전인 것을 확인했습니다. Mac 시스템과 함께 제공되는 이유는 시스템 터미널 구성 파일에 새 버전이 구성되어 있지만 php-fpm 설치 위치가 구성되어 있지 않기 때문입니다. 시스템의 낮은 버전의 php-fpm이 자동으로 로드됩니다. PHP 프레임워크가 더 높은 버전의 PHP에 의존하는 경우 실행되지 않습니다. 🎜🎜4. php-fpm 로딩 디렉터리의 새 버전을 구성합니다. 🎜🎜<code>~/.bash_profile을 구성합니다: 🎜rrreee🎜시스템이 zsh를 사용하는 경우 ~/.zshrc에서 > 추가: 파일 끝에 🎜rrreee🎜를 추가하거나 ~/.zshrc 파일에서 위 경로 구성을 직접 설정합니다. 🎜🎜그런 다음 source ~/.zshrc를 실행하여 구성을 적용하세요🎜🎜5. 현재 php-fpm 버전을 확인하세요🎜rrreee🎜php-fpm의 상위 버전이 자동으로 로드되었습니다. 🎜🎜6. php-fpm을 다시 시작합니다🎜🎜백그라운드에서 실행 중인 php-fpm 프로세스를 종료합니다🎜rrreee🎜php-fpm을 시작하고 백그라운드에서 실행합니다.🎜rrreee🎜현재 phpinfo에서 출력되는 php 버전 정보는 최신입니다. 버전 7.2🎜🎜🎜🎜

위 내용은 php -v 및 phpinfo()의 PHP 버전 출력이 일치하지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿