pphp 도커 이미지에 pdo 드라이버를 설치하는 방법은 무엇입니까?
저는 다음 태그가 있는 php 도커 컨테이너를 기본으로 사용하고 있습니다.
php:5.6-apache
베이직과 연동했습니다.mysql:5.6
호스트에서 도달할 수 있는 이미지mysql
저는 DB를 만들고 테이블을 기본값으로 채웠습니다.
하지만 앱에 액세스하려고 하면 다음과 같은 메시지가 표시됩니다.
Fatal error: Uncaught exception 'PDOException' with message
could not find driver' in /var/www/html/index.php:30
Stack trace: #0 [internal function]:
PDO->__construct('mysql:host=mysq...', 'root', 'root', Array)
#1 [internal function]: Phalcon\Db\Adapter\Pdo->connect(Array)
#2 /var/www/html/index.php(30): Phalcon\Db\Adapter\Pdo-__construct(Array)
#3 [internal function]: {closure}()
#4 [internal function]: Phalcon\Di\Service->resolve(NULL, Object(Phalcon\Di\FactoryDefault))
#5 [internal function]: Phalcon\Di->get('db', NULL)
#6 [internal function]: Phalcon\Di->getShared('db')
#7 [internal function]: Phalcon\Mvc\Model\Manager->_getConnection(Object(Reviews), NULL)
#8 [internal function]: Phalcon\Mvc\Model\Manager->getReadConnection(Object(Reviews))
#9 [internal function]: Phalcon\Mvc\Model->getReadConnection()
#10 [internal function]: Phalcon\Mvc\Model\MetaData\Strategy\Introspection->getMetaData(Object(Reviews), Object(Phalcon\Di\FactoryDefault))
#11 [internal function]: Phalcon\Mvc\Model\MetaData->_initialize(Object(Rev in /var/www/html/index.php on line 30
따라서, 저는 php 컨테이너가 부족하다고 생각했습니다.php-mysql
다음을 통해 설치한 구성 요소:
apt-get install php5-mysql
다음 위치에 mysql.ini도 추가했습니다.
cat /usr/local/etc/php/conf.d/mysql.ini
; configuration for php MySQL module
; priority=20
extension=pdo_mysql.so
내가 만약에echo phpinfo();die
그것은 나에게 다음을 말해줍니다.
Additional .ini files parsed:
/usr/local/etc/php/conf.d/mysql.ini,
/usr/local/etc/php/conf.d/phalcon.ini
하지만 여전히 오류는 계속됩니다.
또한 실행 시:
php -i|grep PDO
이해합니다.
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/local/lib/php/extensions/no-debug-non-zts-20131226/pdo_mysql.so' - /usr/local/lib/php/extensions/no-debug-non-zts-20131226/pdo_mysql.so: cannot open shared object file: No such file or directory in Unknown on line 0
PDO
PDO support => enabled
PDO drivers => sqlite
PDO Driver for SQLite 3.x => enabled
그래서 mysql 확장이 활성화되지 않은 것 같습니다.
내가 뭘 잘못하고 있는 거지?
PHP의 공식 저장소에는 다음과 같은 스크립트가 있습니다.
docker-php-ext-install
https://github.com/docker-library/php/tree/master/5.6
PDO를 실행하는 데 필요한 확장을 설치하지 않았습니다.
다음과 같은 도커 이미지를 만들어 보십시오.
FROM php:5.6-apache
# PHP extensions
RUN docker-php-ext-install pdo pdo_mysql
php 8.1로 작업하고 pdo 및 pdo_mysql 확장을 사용하려면 다음을 시도하십시오.
FROM php:8.1-fpm
WORKDIR /var/www/html
RUN apt-get update && apt-get install -y \
libfreetype6-dev \
libjpeg62-turbo-dev \
libpng-dev \
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
&& docker-php-ext-install -j$(nproc) gd \
&& docker-php-ext-install pdo_mysql
pdo 확장은 기본적으로 설치되며 다음을 변경합니다.WORKDIR
사용 사례에 따른 가치
PHP 공식 도커 이미지 페이지에서 자세히 알아보기
언급URL : https://stackoverflow.com/questions/37526509/how-to-install-pdo-driver-in-php-docker-image
'programing' 카테고리의 다른 글
루아에서 줄 쪼개기? (0) | 2023.07.28 |
---|---|
ALTER TABLE 구문 - DIRECTORY 키워드 누락 (0) | 2023.07.28 |
스프링 부트 내 @ControllerAdvise에서 재정의된 예외 이외의 예외에 대해 빈 본문으로 응답하는 Rest (0) | 2023.07.28 |
테이블에 문 수준 트리거를 구현할 때 영향을 받는 모든 행에 대해 OLD 및 NEW 레코드를 가져올 수 있습니까? (0) | 2023.07.28 |
미국 달러 금액을 나타내기 위해 사용할 수 있는 가장 좋은 장고 모델 필드는 무엇입니까? (0) | 2023.07.28 |