PHP 모듈 디렉토리 변경


8

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

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

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


이것을 테스트 할 시간이 없습니다 : EXTENSION_DIR=/usr/lib64/php/modules phpize.
Mark Wagner

답변:


4

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

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

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

네, 이해가 되겠습니다. 앞으로 모듈이 충돌하기를 원하지 않습니다. 폴더 이름 만 남겨 두겠다고 생각합니다.
copacetic

8

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

php-config --extension-dir

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

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

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


0

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

디렉토리 구성으로 인해 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가 경고하는 것처럼 나중에 모듈 충돌이 발생하지 않기를 바랍니다.


> "기본 위치에 없습니다."기본 위치에 설치된 모든 것을 "단일 버전"을 선택하여 마법사 지침을 제대로 따르지 않았습니다. SCL은 여러 경로를 사용하여 여러 버전을 허용합니다.
Remi Collet

@RemiCollet 답변 주셔서 감사합니다. 마법사에서 단일 버전을 선택했습니다. 컨테이너에 하나의 PHP 버전 만 있기 때문에 원하는 것 같습니다. 내 dockerfile에 추가하지 않은 마법사 지침의 유일한 부분은`yum --enablerepo = remi-php72-test install php-xxx` 및 yum update입니다. 여기에 뭔가 빠졌습니까?
charlesdeb

이 최신 명령은 테스트 패키지 및 추가 확장을위한 것입니다 (원하는 확장명으로 xxx를 대체하십시오)
Remi Collet

@RemiCollet 죄송합니다. 조금 어리석어 야합니다. 테스트 패키지를 사용하면 mysql 모듈이 .../remi/...폴더에 들어 가지 않는 문제를 해결할 수 있습니까?
charlesdeb

1
php- * 패키지 (단일 버전)는 표준 경로를 사용하고 php72-php- * (SCL, 다중 버전)는 / opt / remi를 사용한다고 말합니다.
Remi Collet
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.