인프런 커뮤니티 질문&답변

Myeong Seong Jeong님의 프로필 이미지

작성한 질문수

PHP 7+ 프로그래밍

Call to undefined function mysqli_connect() 에러

작성

·

8K

0

mysqli_connect() 함수 에러 같은데 구글에서 찾아서 php.ini extension=mysqli 주석 처리를 풀어 보라고 해서 풀었더니

오류는 안나오는데 브라우저에 메뉴가 안나오네요. 

require_once 'bootstrap/app.php'; 주석처리하면 메뉴가 나오고 주석처리 안하면 또 안나오고 ...

해결 방법이 있나요/./


; If you wish to have an extension loaded automatically, use the following
; syntax:
;
;extension=mysqli.dll <<<<<<<<<<<<<<
;
; For example:
;
;extension=mysqli <<<<<<<<<<<<<
;
; When the extension library to load is not located in the default extension
; directory, You may specify an absolute path to the library file:
;extension=mbstring
;extension=exif      ; Must be after mbstring as it depends on it
;extension=mysqli <<<<<<<<

답변 5

0

윈도우 사용자분들은 mysqli의 경로를 직접 지정해주셔야합니다.

extension=mysqli

아래로 변경하시면 됩니다.

extension=C:\php8\ext\php_mysqli.dll

0

친절하고 빠른 답변 감사드려요.

아직 해결을 못해서 일단 폴더 자체를 MAMP로 옮겨서 강의 진행하고 있습니다.

강의 다 듣고 후기 꼭 남기겠습니다.

0

정상우님의 프로필 이미지
정상우
지식공유자

네, 그렇습니다. extension_loaded('mysqli'); 의 결과가 false 가 나온다면 로드하지 못한 것입니다.

1. php.ini 에서 extension=mysqli 의 주석이 해제되어 있어야 하며 , extension_dir 에 설정되어 있는 폴더에 php_mysqli.dll 이 존재하여야 합니다. 이것이 첫 번째 해결 방법입니다.

2. 두 번째 해결 방법은 PHP 매뉴얼을 찾아보는 것이 있습니다. WindowsLinux 에서의 해결 방법이 다를 수 있기 때문입니다. 확장마다 설치방법이 매뉴얼에 나와있는데, mysqli 확장 매뉴얼을 열고 Installation 에 진입하여 설치 방법을 확인합니다.

https://www.php.net/manual/en/mysqli.installation.php

3. 마지막으로는 PECL(PHP Extension Community Library)에서 찾아보는 방법입니다. 해당 사이트는 php extensions 가 저장되어 있는 Repository 입니다.

다만 해당 사이트 사용시 주의해야 할 점은 반드시 현재 사용하고 있는 php 의 버전64, 32비트, Thread Safe 를 알아야하고, 이에 맞는 확장을 설치해야 합니다. 위와 같은 사항을 확인하기 위해서는 phpinfo() 함수를 사용합니다.

https://pecl.php.net/

-- 좋은 질문 감사합니다. 이 질문을 강의 소개 - 참고 할만한 질의 응답에 추가합니다.

0

extension_loaded('mysqli');
했을때 bool(false)가 나오면 mysqli가 로드 되지 않았다는 뜻인가요?

var_dump(mysqli_connect('localhost', 'root', 'root', 'db_test'));
Uncaught Error: Call to undefined function mysqli_connect() in C:\php\PDO\index
똑같은 에러가 나오네요.

제가 VSCODE 익스텐션에서 Mysql 관련된 익스텐션 설치했고,
mysqli 관련 익스텐션은 없어서 설치를 안했어요.

php 설치할 때 php.ini 파일에서 무슨 설정을 해줘야 하는건가요?

안녕하세요 , 같은 문제를 겪고 있다가 해결하여 보내드립니다.

밑에분 말씀대로 extension=mysqli 주석을 제거해도 안되는 경우였기에

아래처럼 하니 해결 되었습니다

 

구동 os : ubuntu , 

apt install php-mysqli  로 설치하셔서 사용하면 됩니다

이외 CentOs 는 yum 명령어를 사용하여 설치 ,현재 이용중인 os맞게 php-mysqli를 설치하시면 쉽게 해결됩니다

0

정상우님의 프로필 이미지
정상우
지식공유자

그러면 혹시 mysqli Extension 을 설치하셨다면, 프로젝트 이외에 독립적으로 테스트를 돌려보시는 건 어떨까요? mysqli functions 를 함수 할 수 있는 코드를 별도의 php 파일을 만들어서 실험해보시는 것도 좋습니다. 

<?php

// 익스텐션이 로드가 되었는지 체크해보세요.
extension_loaded('mysqli');

/////

// -> class mysqli#1
var_dump( mysqli_connect('localhost', 'root', 'root', 'myapp_test') );