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

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

phpinfo()그리고 php -v(CLI에서) 에 의해 보고된 PHP 버전 간에 일치하지 않는 부분이 있다는 것을 깨달았습니다 .

phpinfo():  5.5.24
php -v: 5.6.9

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

내 노트북에 3가지 다른 버전이 설치되어 있다고 보고됩니다.

  5.4.41
  5.5.25
* 5.6.9

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

Apache에 어떤 PHP 버전이 사용되는지 어떻게 알 수 있나요?

나는 다음 줄을 작성하려고했습니다 httpd.conf.

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

그 다음에:

sudo apachectl restart

하지만 이 모든 것이 문제를 해결하지는 못합니다… 내 PHP 정보에는 아직 다음이 있습니다: 5.5.24

답변1

PHP 버전 혼동이라는 개념 아래에는 몇 가지 다른 문제가 모두 숨어 있으므로 가능한 한 명확하게 각 문제를 해결하려고 노력할 것입니다. 먼저 이:

phpinfo()그리고 php -v(CLI에서) 에 의해 보고된 PHP 버전 간에 일치하지 않는 부분이 있다는 것을 깨달았습니다 .

phpinfo():  5.5.24
php -v: 5.6.9

PHP CLI는 PHP Apache 모듈과 동일하지 않습니다.

제가 답변에서 설명했듯이여기 다른 질문이 있어요, 당황하지 말 것! 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_moduleApache 구성 파일에 해당 행을 설정하는 값을 대체하는 또 다른 지시문이 있기 때문입니다.

httpd.conf여기에 있는 것으로 추정되는 파일 을 살펴보고 해당 파일을 편집할 때 놓쳤거나 눈치채지 못한 /etc/apache2/httpd.conf또 다른 파일이 있는지 확인하는 것이 좋습니다 . LoadModule php5_moduleMac 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 시스템에서 웹 개발을 하고 있다면 진지하게 다음을 사용하는 것을 고려해야 합니다.MAMP핵심 Mac OS X 웹 스택을 해킹하여 작업을 실행하는 대신.

MAMP의 장점은 LAMP 스택과 동등한 생산 수준의 Mac OS X라는 것입니다. 그리고 실제 웹 개발에 맞춰져 있기 때문에 모든 모듈과 구성이 설정해야 하는 것과 정확히 동일하게 설정되어 있습니다.

Mac OS X에서 Apache 및 PHP의 핵심 문제는 소프트웨어가 일반적으로 오래되어 구성/조정 및 관리가 어렵고 이와 같은 일이 발생할 때 디버깅하기가 어렵다는 것입니다. 그리고 신중하게 설정한 Apache 및 PHP 설정을 지우는 Mac OS X 업데이트가 출시된다면 어떻게 될까요? 당신은 원점으로 돌아 왔습니다.

답변2

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

sudo apachectl restart

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

사용:

sudo apachectl -k stop
sudo apachectl -k start

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

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

도 감사하다@Giacomo1968의 설명.

답변3

내 상황(작곡기가 설치된 Windows 서버)에서 작곡가는 php.ini의 다양한 PHP 확장에 대한 경로를 하드 코딩했습니다(예: 확장명=C:/php7-3-27/ext/php_gd2.dll). 그래서 그것들도 바꿔야 했어요. Apache 웹 페이지에서 호출된 phpinfo()에 표시되는 버전은 여전히 ​​변경되지 않았습니다. 작곡가가 내 이전 PHP 버전 폴더도 PATH 환경 변수에 추가했기 때문에 버전 변경이 적용되는 것을 확인하기 전에 새 PHP 폴더를 가리키도록 변경해야 했습니다.

물론 이 스레드의 다른 답변에 따라 httpd.conf가 업데이트되었는지 확인해야 합니다. 하지만 그래도 작동하지 않으면 phpinfo()에 나열된 php.ini 경로가 무엇인지 확인하고 다음 ^^ 항목도 확인하세요.

관련 정보