PHP 모듈 디렉토리 변경 컴파일하고 모듈 디렉토리를 / usr /

PHP를 컴파일하고 모듈 디렉토리를 / usr / lib64 / 20090626-zts로 설정합니다.

이것을 / usr / lib64 / php / modules로 변경하고 싶지만 그렇게하는 구성 옵션을 찾을 수 없습니다.

내 php.ini에서 변경하고 디렉토리를 이동할 수 있지만 phpize를 실행하고 새 모듈을 만들면 여전히 / usr / lib64 / 20090626-zts에 저장됩니다



답변

/ usr / lib64 / php / modules를 ID가있는 폴더에 대한 심볼릭 링크로 만들 것을 제안합니다. 이것은 장기적으로 다른 버전의 PHP에서 확장을 혼합하는 것을 방지합니다.

그 외에도 : EXTENSION_DIRPHP의 configure를 실행하기 전에 환경 변수 로 설정하여 설정할 수 있어야 합니다. 같은

 $ EXTENSION_DIR=/my/location ./configure --with-some-extension


답변

다음을 사용하여 현재 확장 디렉토리를 확인하십시오.

php-config --extension-dir

다음 extension_dir에서 설정 하여 변경할 수 있습니다 php.ini.

extension_dir="/usr/lib64/php/modules"

Apache를 다시 시작하는 것을 잊지 마십시오.


답변

내 문제는 동일하지 않지만이 질문은 궁극적으로 매우 도움이되는 답변으로 처음 나타 났으므로 의견을 추가 할 것입니다.

디렉토리 구성으로 인해 PHP를 (도커 컨테이너에서 실행되는 Centos7에서) MySQL을 사용하는 데 문제가있었습니다. 사전 빌드 된 바이너리를 사용하고 아무것도 컴파일하지 않았지만. 다양한 pdo 및 mysqlnd.so 모듈과 .ini 파일이 내 컨테이너에 설치되었지만 ( PHP 설치 마법사에yum install php72 지정된 표준 및 기타 모든 항목을 사용하여 ) PHP가 찾고 있던 기본 위치에는 없었습니다. 왜 그런지 모르겠습니다. 어쩌면 그것은 일종의 도커 일입니까?

어쨌든,이 문제를 해결하기 위해 extension_dir지시문을 에코로 PHP.ini보내야했고 또한 PHP_INI_SCAN_DIRenv 변수를 설정했습니다 . 이들은 Dockerfile의 관련 명령입니다.

ENV PHP_INI_SCAN_DIR=/etc/php.d/
RUN echo 'extension_dir = "/usr/lib64/php/modules"' >> /etc/opt/remi/php72/php.ini

@johanes가 경고하는 것처럼 나중에 모듈 충돌이 발생하지 않기를 바랍니다.


답변