-
[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 따로 설치하는 것도 힘든데
이렇게 연동하는거까지 힘들면 어쩌라구ㅜㅠㅠㅠ 너무해ㅠㅠ
제발 여러분 저처럼 삽질하지마세요ㅠㅠㅠ
'Web' 카테고리의 다른 글
php파일 html, css 를 이용한 구글클론사이트[2] (0) 2020.04.20 php파일 html, css 를 이용한 구글클론사이트[1] (1) 2020.04.19