ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [PHP_MYSQL] 연동 에러 해결방법!!!
    Web 2020. 9. 18. 02:25

     

     

     

        환경   >>>>>   Apache2.4 / php7 / Mysql 8.0 / 윈도우    

     

    진짜 뭐라고 말을 꺼내야 할지 모를정도로 php랑 mysql 연동에 엄청 시간을 많이 쏟았다.. (끔찍해)

    맨날 에러나고.. 나 DB연동 하고싶은데ㅠㅠ 진짜 다지우고 잼프 깔아야하나 이 생각했다ㅜㅠ

    (참고로 나는 mysql, Apache, php를 각각 깔았음!)

    개끔찍한 php와 mysql 연동 에러에 대해서 내가 그동안 해결했던 방법들을 적어본당!!!


     

     

     

    1.  C:\Windows 안에 php.ini 파일 있는지 확인하기

    -  나중에 php.ini 파일을 수정해야한다! (C:\Windows 경로에 있는!!)                                                                                                      php 경로 안에 있는 php.ini-development 는 수정해봤자 아무일도 안일어난다!! (헛수고 하지 마시길..나처럼...또르르)

     

    보통(처음 설치할  때) php.ini-development 를 복사해서
    C:\Windows 경로에 파일이름은 php라고 하고, 확장자는 .ini 라고 붙여넣는다.
    (php.ini-development 랑 php.ini-production 중 아무거나 복사해도 상관없다곤 한다.. 참고로 난 develo..)

     

     

    2.  Class 'mysqli' not found ... 에러가 난다면 

     php\ext 경로에 php_mysqli.dll 이 있는지 확인하기 & php.ini 파일을 수정

     

    # php_mysqli.dll 파일 경로 확인하기

    php_mysqli.dll 파일 경로를 php.ini 파일에 삽입해주어야 하므로 위치를 우선 확인해줍니다.
    ( 저 같은 경우는   C:\Apache24\php\ext  에 존재합니다.)

     

    # php.ini 파일 수정

    1.  ; 제거하기 (주석 제거하기) 
    2.  자신의 php_mysqli.dll 경로 삽입하기
    (여기서 조심해야할 것!!! 제발 php_mysqli.dll 인지 확인하세요(iiiiiiiiiiiii 확인하세요) 저는 php_mysql.dll 로 계속 적어서 계속 에러남ㅠㅠ 바보같은 내손꾸락..)

     

     

    3.  파일 경로에 한글 넣지 말기!!

    -  한글을 못알아 듣는다.. Apache 나 PHP 폴더 경로에 한글이 포함 안되게 할 것!

     

     

    4.  Unable to load dynamic library ... pdo_mysql  에러가 난다면 

    php.ini 파일(Windows 경로에 있는)에서 pdo_mysql 부분에 주석처리를 한다.

    그렇게 되면 주석처리가 되서 pdo_mysql 을 처리하지 않는다.

     

     

    5.  Unable to load dynamic library ... php_curl.dll  에러가 난다면 

    -    php.ini 파일(Windows 경로에 있는)에서 extension_dir = "" 에 주석을 빼고
         ext 폴더(php_curl.dll파일이 존재) 경로를 삽입한다.

    이게 대부분 경로 삽입하는게 2개씩 나오는 경우가 있는데 이건 혹시나 해서 2개 다 경로를 넣어줬다.

     

     

    6.  아직도 안된다면 사진이랑 비교해서 httpd.conf 파일 수정하기

    -   빨간 박스 4줄을 httpd.conf 파일(Apache24\conf 폴더에 존재)에 맨 밑에 추가하면 된다.  

    PHPIniDir "C:\Windows"
    LoadModule php7_module "C:\Apache24\php\php7apache2_4.dll"
    AddType application/x-httpd-php .html .php
    AddHandler application/x-httpd-php .php

    (1번째 줄은 php.ini 파일 경로이다.)
    (2번째 줄은 module php5_module is already loaded, skipping  이런 에러가 날 수도 있다, 이미 위에 존재한다는 말이므로 지우면 된다.)

     

     


     

     

    이제 대부분 에러를 고쳤다면 계속해서 DB 연결이 잘 되는지 확인하면 된당!

    그전에 httpd.conf 파일을 수정했기 때문에 아파치를 재시작 해야한다.  


     

     

    # 아파치 재시작

    >  컴퓨터 관리에 들어가서 시작 종료를 누르면 된다. 

     

     

     

    나같은 경우는 아파치 폴더를 한글이 존재하는 경로에 두어서 다시 옮겼다.....ㅎㅎ

    그래서 CMD 를 통해서 아파치를 서비스에서 지우고 다시 설치하는 고된 일을 겪었다아... (여기도 에러 쩔었다)


     

     

    # 아파치(Apache) 서비스 삭제

    -  CMD 관리자 모드로 아파치 폴더의 bin 폴더 경로로 들어가서 httpd 를 이용하여 아파치 서비스를 삭제한다.

    C\Apache24\bin > httpd -k uninstall

     

    # 아파치 서비스 설치

    - 아파치 서비스를 다시 설치한다.

    C\Apache24\bin > httpd -k install

     

     

     

    # 1 .  Set the 'ServerName' directive globally to suppress this message  에러

    -  ServerName을 localhost 로 써주면 된다.

    ServerName 127.0.0.1
    ServerName 127.0.0.1:80
    ServerName localhost
    ServerName localhost:80

    ( 위에 중에 아무거나 1개만 쓰면 된다! 다 같은말! ) 

     

     

    # 2 .   reported here must be corrected before the service can be started  에러

    -   httpd.conf 의 문법이 정상인지 확인해야 해결되는 에러이다.  httpd -n "Apache2.4" -t

    C:\Apache24\bin >  httpd -n "Apache2.4" -t
    Syntax OK

    이제 다시 아파치 서비스 시작을 하면 된다!  >  httpd -k start

     

     


     

     

    php.ini 파일을 수정했을때 DB연동이 되는지 바로 확인하는 명령어!

    ( 여기서도 에러가 난다~~~하핳ㅎ핳ㅎㅎ )


     

     

    #    PHP -m | findstr mysql

    -   CMD에서 php.exe 가 있는 폴더(Apache24\php 경로)로 들어가서 명령어 입력 후 "mysqli" 출력되면 연동 완료!!!!

    PHP -m | findstr mysqli

    (근데 나는 출력 안돼도 에러가 안나오니까 되더랑!!)

    (뭐 고치니까 또 출력이 된당..ㅋㅋ!!)

     

     

    #   PHP와 MySQL의 DB 연동을 위한 코드

    <?php
    
    $db_host = "localhost";
    $db_user = "root";
    $db_password = "mysql 비밀번호";
    $db_name = "데이터베이스이름";
    
    
    $con = new mysqli($db_host, $db_user, $db_password, $db_name); // DB 접속
    
    if ($con->connect_errno) { 
    	echo "실패"; } // 에러 메세지 출력
    else {
    	echo "성공....진짜 너무힘들었다..";}
    
    ?>

     

     


     

     

    진짜 너무 힘들었다... 에러가 너무 많고.. PHP랑 Apache랑 MySQL 따로 설치하는 것도 힘든데

    이렇게 연동하는거까지 힘들면 어쩌라구ㅜㅠㅠㅠ 너무해ㅠㅠ

    제발 여러분 저처럼 삽질하지마세요ㅠㅠㅠ 


     

    댓글

Designed by Tistory.