728x90

CentOS 리눅스에서 PHP 소스코드가 MySQL 연결방식으로 코딩된 소스코드를 MySQLi 로 일괄 변경하는 방법이다.

디렉토리 /home/httpd/htdocs/ 를 Web Root directory 로 설정되어 있고, PHP 소스코드가 sub directory를 포함하여 있는 경우라고 보면 된다.

PHP 5.X 버전의 소스코드를 PHP 7.X 버전으로 일괄 변경할 때 유용한 기능이다.

# 디렉토리 chmod 755 및 파일 chmod 644 권한으로 변경
find /home/httpd/htdocs -type d -exec chmod 755 {} \;
find /home/httpd/htdocs -type f -exec chmod 644 {} \;
 
find /home/httpd/htdocs -type f -name '*.php' -exec perl -pi -'s/mysql_num_rows/mysqli_num_rows/g' {} \;
find /home/httpd/htdocs -type f -name '*.php' -exec perl -pi -'s/mysql_fetch/mysqli_fetch/g' {} \;
find /home/httpd/htdocs -type f -name '*.php' -exec perl -pi -'s/mysql_query\(/mysqli_query\(\$db,/g' {} \;
find /home/httpd/htdocs -type f -name '*.php' -exec perl -pi -'s/mysql_error\(/mysqli_error\(\$db/g' {} \;
find /home/httpd/htdocs -type f -name '*.php' -exec perl -pi -'s/mysql_close\(/mysqli_close\(\$db/g' {} \;
find /home/httpd/htdocs -type f -name '*.php' -exec perl -pi -'s/mysql_insert_id\(/mysqli_insert_id\(\$db/g' {} \;
 

 

위에서 보면 $db 로 되어 있는 걸 확인할 수 있다.

db를 연결하는 dbconnect.php 파일의 내용을 아래와 같이 작성하고 include 해서 사용하면 된다.

<?php
$db_server = 'localhost';
$db_user_name = 'dbuser';
$db_password = 'dbpassword';
$db_name = 'dbname';
$db['port'= "3306";
 
$db = isConnectDb($db);
 
function isConnectDb($db)
{
    $conn = mysqli_connect($db_server,$db_user_name,$db_password,$db_name,$db['port']);
    mysqli_set_charset($conn"utf8");  // DB설정이 잘못되어 euc-kr 로 되어 있으면 문제가 됨
    if (mysqli_connect_errno()) {
        echo "Failed to connect to MySQL: " . mysqli_connect_error();
        exit;
    } else {
        return $conn;
    }
}
?>

 

 

 

 

728x90
블로그 이미지

Link2Me

,