* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
|
linux centos 7 |
|
CUBRID 10.2 (10.2.2.8874-f681dd9) (64bit release build for Linux) (Sep 1 2020 09:41:17 |
|
[도움말]-[버전정보] 확인 |
|
php 7.4 (pdo 드라이버 컴파일 및 설치 오류) |
* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.
에러 내용 및 재현 방법 | 재현 가능한 Source와 SQL |
관련 테이블(인덱스, 키정보 포함) 정보 | CUBRID 홈 디렉토리 아래 log 디렉토리 압축 |
-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------
우여곡절끝에 cubrid_php-10.2 를 컴파일을 했는데요. (11버전을 하고 싶었지만, 컴파일 오류가 나서 포기했습니다. )
- 컴파일한 드라이버 버전은 cubrid-pdo-10.2.0.0001 입니다.
( https://github.com/CUBRID/cubrid-pdo/releases/tag/v10.2.0.0001 )
컴파일 옵션
$ ./configure --with-pdo-cubrid=/opt/cubrid/CUBRID-10.2.2.8874-f681dd9-Linux.x86_64 --with-php-config=/opt/re
mi/php74/root/bin/php-config
- Centos 7 에서 devtoolset-9 버전을 설치한게 큰 도움이 되었습니다. (php 라이브러리 컴파일 매뉴얼에 gcc버전 관련 내용을 추가해주셨으면 합니다.)
프로그램이 pdo 로 개발되어 있어서 pdo_cubrid 를 컴파일 하고 있습니다.
어떻게 해서 컴파일은 했는데 다음과 같은 오류를 내면서 실행이 되지 않습니다.
PHP Warning: PHP Startup: Unable to load dynamic library 'pdo_cubrid' (tried: /opt/remi/php74/root/usr/lib64/php/modules/pdo_cubrid (/opt/remi/php74/root/usr/lib64/php/modules/pdo_cubrid: cannot open shared object file: No such file or directory), /opt/remi/php74/root/usr/lib64/php/modules/pdo_cubrid.so (/opt/remi/php74/root/usr/lib64/php/modules/pdo_cubrid.so: undefined symbol: php_pdo_register_driver)) in Unknown on line 0
이에 대한 좋은 해답이 있으면 알려주세요.
(추가)
MSSql에서의 다음과 같은 대응에 따라,
undefined symbol: php_pdo_register_driver in Unknown on line 0 #151
https://github.com/microsoft/msphpsql/issues/736
php.ini 에서의 항목을 삭제하고, php.d/ 에 20-cubrid.ini와 30-pdo_cubrid.ini 파일을 만들어서 대응했는데요.
이번에는 다음과 같은 오류가 발생했습니다.
PHP Warning: PHP Startup: Unable to load dynamic library 'pdo_cubrid' (tried: /opt/remi/php74/root/usr/lib64/php/modules/pdo_cubrid (/opt/remi/php74/root/usr/lib64/php/modules/pdo_cubrid: cannot open shared object file: No such file or directory), /opt/remi/php74/root/usr/lib64/php/modules/pdo_cubrid.so (/opt/remi/php74/root/usr/lib64/php/modules/pdo_cubrid.so: undefined symbol: add_assoc_unset)) in Unknown on line 0
(추가2)
아마도 php7은 지원하지 않는 모양이네요.. 매뉴얼대로..
소스는 아마도 7을 개발하고 있는것 같은데요.
일단 버전 지원 부터 말씀 드리면,
V10.2 PDO Driver에서는 PHP7.4를 지원하지 않습니다. PHP7.1은 지원됩니다.
V11.0 PDO Driver에서는 PHP7.1, 7.4를 지원합니다.
Engine을 V10.2를 사용하시는 걸로 보이며, V10.2 Driver 사용을 위해 PHP7.1을 사용 부탁드립니다.
centos7.8에서 PHP Downgrade 방법, 간략한 setting 방법은 아래와 같습니다.
- downgrade
기존 삭제 command) sudo yum remove php-*
PHP 71 설치 command) sudo yum --enablerepo=remi-php71 install php php-common php-devel php-pdo (기타 필요한 package)
- cubrid-pdo 재빌드, 재설치 (centos7 기준)
(참고) cubrid는 현재 devtoolset-8로 개발중입니다.
php 버전 변경시 재 빌드가 필요합니다.
1. download (https://ftp.cubrid.org/CUBRID_Drivers/PHP_Driver/PDO/CUBRID10.2.0/Linux/CUBRID-PDO-10.2-latest.tar.gz)
2. build
command) cd 압축푼폴더
command) phpize
command) touch cci-src/configure.ac (release에 문제가 있어 configure update를 위해 필요합니다.)
command) ./configure
command) make
3. 기본 lib경로를 사용할 경우 build된 pdo_cubrid.so파일을 하기 경로에 추가합니다.
'/usr/lib64/php/modules'
(타 경로 사용시 extension_dir 설정이 필요합니다)
4. 하기 내용과 같은 파일을 생성하여 '/etc/php.d' 경로에 추가합니다.
[hwanyseo@cenos7new php.d]$ cat 30-pdo_cubrid.ini
extension=pdo_cubrid.so
5. 하기 파일(메뉴얼 예제)을 통해 사용가능한 pdo driver를 확인하시면 됩니다.
command) php version.pdo
[cat version.pdo]
<?php
echo'PDO Drivers available:
';
foreach(PDO::getAvailableDrivers()as $driver)
{
if($driver =="cubrid"){
echo" - Driver: <b>".$driver.'</b>
';
}else{
echo" - Driver: ".$driver.'
';
}
}
사용하시는 centos7 기준으로 작성 확인 된 사항입니다.
V11.0 Engine 사용 시 위 가이드와 동일하게 V11.0 Driver를 사용하시면 됩니다.
https://ftp.cubrid.org/CUBRID_Drivers/PHP_Driver/PDO/CUBRID11.0.0/Linux/CUBRID-PDO-11.0-latest.tar.gz
참고 부탁드립니다.