phpinfo ()와 CLI에서 PHP 버전이 다른 이유는 무엇입니까?


27

phpinfo()php -vCLI에서 보고 한 PHP 버전이 일치하지 않는다는 것을 깨달았습니다 .

phpinfo():  5.5.24
php -v: 5.6.9

Mac OS X 10.10 (Yosemite)에서 작업 중이며 php-versionPHP 버전 관리를 위해 라이브러리 ( )를 설치했습니다 .

내 노트북에 설치된 3 가지 버전이보고됩니다.

  5.4.41
  5.5.25
* 5.6.9

Apache와 CLI에서 동일한 버전의 PHP를 설정하고 싶습니다.

어떤 PHP 버전을 사용하는지 아파치에 알리려면 어떻게해야합니까?

나는이 줄을 내 안에 쓰려고 노력했다 httpd.conf.

LoadModule php5_module    /usr/local/opt/php56/libexec/apache2/libphp5.so

그때:

sudo apachectl restart

그러나이 모든 것이 문제를 해결하지 못합니다 ... 내 PHP 정보에는 여전히 있습니다 : 5.5.24



1
@ bertieb 질문은 실제로 다른 질문과 유사합니다. 방금 대답 했지만 여기에 특정 문제가 있습니다.
JakeGould

답변:


14

여기에 몇 가지 다른 문제가 모두 PHP 버전 혼란이라는 개념 아래 숨겨져 있으므로 가능한 한 명확하게 각 문제를 해결하려고 시도합니다. 먼저 이것은 :

phpinfo()php -vCLI에서 보고 한 PHP 버전이 일치하지 않는다는 것을 깨달았습니다 .

phpinfo():  5.5.24
php -v: 5.6.9

PHP CLI는 PHP Apache 모듈과 다릅니다.

이 다른 질문 에 대한 답변에서 설명 할 때 당황하지 마십시오! 아파치 서버가 어떤 PHP 버전을 사용하고 있는지에 대해 걱정한다면, phpinfo()항상 출력에 주의를 기울여야합니다. Apache PHP 모듈과 PHP 명령 행 바이너리는 서로 간섭하지 않는 두 가지입니다.

phpinfo()Apache에서 올바른 PHP 모듈 버전을 설정하는 데 관심이있는 경우 출력에주의 하십시오.

즉, 여전히 Apache에 올바른 PHP 모듈을로드하는 데 문제가있는 것 같습니다.

나는이 줄을 내 안에 쓰려고 노력했다 httpd.conf.

LoadModule php5_module    /usr/local/opt/php56/libexec/apache2/libphp5.so

Apache 서버가 올바른 PHP 모듈을로드하고 있는지 확인하십시오.

기술적으로 올바른 것으로 보이지만 이것이 작동하지 않는 유일한 이유 LoadModule php5_module는 Apache 구성 파일에 해당 줄을 설정하는 값을 대체하는 다른 지시문이 있다는 것입니다.

필자는 httpd.conf여기에 있다고 가정 하고 해당 파일을 편집 할 때 놓쳤거나 알지 못하는 /etc/apache2/httpd.conf다른 LoadModule php5_module것이 있는지 확인 하는 것이 좋습니다 . Mac OS X 10.9.5에서 동등한 파일을 보면 Mac OS X Apache / PHP 설정을 사용하지 않기 때문에 행이 주석 처리되어 있으며 다음과 같이 읽습니다.

#LoadModule php5_module libexec/apache2/libphp5.so

물론 당신의 경우에는 주석 처리가 제거됩니다. 웹 개발을위한 Apache 및 PHP 구성에 대한 자세한 내용은 이 사이트에서 찾을 수 있습니다 .

Mac OS X Apache / PHP 단점에 대한 대안으로 MAMP 사용을 고려하십시오.

이제는 무엇을하려고하는지 모르겠지만 Mac OS X 시스템에서 웹 개발을 수행하는 경우 핵심 Mac OS X 웹 스택을 해킹하는 대신 MAMP 를 사용하여 문제를 고려해야합니다. 달리는.

MAMP의 장점은 LAMP 스택과 동등한 생산 수준의 Mac OS X입니다. 또한 실제 웹 개발을 위해 설계되었으므로 모든 모듈과 구성을 설정해야합니다.

Mac OS X에서 Apache 및 PHP의 핵심 문제는 소프트웨어가 일반적으로 구식이며 구성 / 조정 및 관리가 어려우며 이와 같은 일이 발생하면 디버깅해야하는 문제입니다. Mac OS X 업데이트가 함께 제공되면 신중하게 설정 한 Apache 및 PHP 설정을 지울 수 있습니까? 당신은 다시 정사각형으로 돌아 왔습니다.


왜이 대답 않았다 복제를 중복으로 질문을 표시하는 대신?
Pmpr

@Trix "duplicate"는 서로 며칠 내에 게시 된 다른 질문에 대한 유사한 답변이기 때문입니다. 내가로서 여기에 유사한 코멘트에 대답 , "질문 @bertieb 다른 하나 참으로 유사하다. 방금 대답했지만 여기에 구체적인 문제가 있습니다. – JakeGould 9 월 12 '15 at 0:42”한 가지 질문은 PHP와 명령 줄의 차이점에 관한 것입니다. 다른 하나는 AND PHP 모듈 문제입니다.
JakeGould

4

내 문제에 대한 해결책을 찾았습니다. 편집 한 후 다음을 /etc/apache2/httpd.conf사용하여 아파치를 다시 시작했습니다.

sudo apachectl restart

어떤 이유로이 명령을 사용하면 Apache가에서 업데이트를 가져 오지 않고 httpd.conf이전 구성을로드 하지 않습니다 .

사용 :

sudo apachectl -k stop
sudo apachectl -k start

모든 서비스를 강제로 다시 시작하고 구성 파일의 업데이트를 읽고 마지막으로 다음에 대한 새 경로를 읽습니다 php5_module.

/usr/local/opt/php56/libexec/apache2/libphp5.so

그의 설명에 대해 @JakeGould에게도 감사드립니다 .


플래그 / 옵션이 존재하지 않는지 확인 -k하면 apachectl명령 에서 플래그 를 제거하도록 게시물을 편집 apachectl -h했습니다. 어디서 구했는지 모르겠다. 또한 상태 stopstart정리 하고 정리 하는 동안 restartLinux 시스템에서는 정확히 그렇게한다는 것이 이상합니다. 에있는 스크립트를 확인하면 /usr/sbin/apachectl(스크립트이므로 텍스트 편집기를 사용하여 볼 수 있음) 정확하게 수행하는 것처럼 보입니다. 아마도 Mac OS X에서 LaunchDaemons표준 Linux와 비교할 때 Apache 용 아파치가“이상한”것일까 요? 어쨌든, 당신은 이것을 해결했습니다.
JakeGould

그냥 정보를 원하시면 여기 -k 플래그와 명령을 발견 httpd.apache.org/docs/2.2/stopping.html
살바토레 Dibenedetto에게

당신이 올바른지. 나는 /usr/sbin/apachectl(어떤 명령없이) 의 "도움말"출력을 살펴 보았 으며 명확하게 말합니다 [-k start|restart|graceful|graceful-stop|stop]. 나는 아파치가 리눅스 시스템에서 작동하는 방식에 너무 익숙해 져서 명령 -k과 함께 사용할 플래그를 잊어 버린 것 같습니다 apachectl. 따라서 당신이 가지고있는 실제 문제는 다음 과 같이 플래그를 추가 sudo apachectl restart해야했을 때이 명령으로 다시 시작하려고 한다는 것 입니다. -ksudo apachectl -k restart
JakeGould
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.