PHP 에서 나오는 에러 mysql_pconnect(): The mysql extension is deprecated and will be removed in the future 해결법
코드이그나이터 공부를 하다
mysql 관련 에러가 로그에 자꾸 떠서 해결 할라고 검색을 해봤다.
로그 출력내용 :
Severity: 8192 --> mysql_pconnect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead /codeigniter/framework/system/database/drivers/mysql/mysql_driver.php 135 Severity: Warning --> mysql_pconnect(): Headers and client library minor version mismatch. Headers:50550 Library:100027/codeigniter/framework/system/database/drivers/mysql/mysql_driver.php 135
PHP5.5 부터 비권장이 된mysql_connect()
이슈발견된 환경은
PHP 5.5.9-1ubuntu4.19 (cli) (built: Jul 28 2016 19:31:33)
인데 mysql_connect() 함수에 대한 오류라고 한다.
PHP5.5 부터는 오브젝트 지향을 따른 mysqli 를 사용하여 데이터베이스 접속, 쿼리문 실행 등을 권하고 있다.
mysql 과 mysqli 의 간단비교
// mysql $link = mysql_connect('Host or IP', 'User', 'Pass'); $db_selected = mysql_select_db('DBName', $link);
// mysqli $mysqli = new mysqli('Host or IP', 'User', 'Pass', 'DBName');
보다 싶이 mysqli 의 경우 mysqli 의 인스턴스를 생성해 사용하게 된다.
codeigniter 설정 수정
application/config/database.php 의 내용에서 dbdriver 부분을 수정을 해야 한다.
$db['default'] = array( . . 'dbdriver' => 'mysqli', . );
ubuntu 의 경우 php5-mysqlnd 패키지인지 확인
// php-mysql 로 깔려 있다면 일단 삭제 # sudo apt-get remove php5-mysql // 설치 # sudo apt-get install php5-mysqlnd
PHP7 에서는 아애 mysql함수 자체를 지원안한다고 하던데,
기존 PHP 서적이나 소스에 mysql 함수가 있는지 주의를 해야 할거 같다.
참고
http://qiita.com/taro_3000/items/f9db8f816cf3837b59b9
http://stackoverflow.com/questions/10759334/headers-and-client-library-minor-version-mismatch
No Comments