[php] MySQL 연결이 작동하지 않음 : 2002 해당 파일 또는 디렉토리가 없습니다.

WordPress를 설정하려고합니다. Apache와 MySQL이 실행 중이고 계정과 데이터베이스가 모두 설정되었습니다. 간단한 연결을 시도했습니다.

<?php
    $conn = mysql_connect('localhost', 'USER', 'PASSWORD');
    if(!$conn) {
        echo 'Error: ' . mysql_errno() . ' - ' . mysql_error();
    }
?>

그리고 나는 항상 이것을 얻습니다.

오류 : 2002-해당 파일 또는 디렉터리가 없습니다.

어떤 파일이나 디렉토리에 대해 이야기 할 수 있습니까?

저는 내장 Apache를 사용하는 OS X Snow Leopard를 사용하고 있습니다. x86_64 dmg를 사용하여 MySQL을 설치했습니다.

업데이트 : 소켓이 /tmp/mysql.sock에 있다는 것을 알았으므로 php.ini에서 잘못된 경로의 모든 발생을 그로 대체했습니다.



답변

Linux를 사용하는 경우 : mysql.sock 파일의 경로가 잘못되었습니다. 이것은 일반적으로 (LAMPP) XAMPP를 사용하고 있고 /tmp/mysql.sock에 없기 때문입니다.

php.ini 파일을 열고 다음 줄을 찾습니다.

mysql.default_socket

그리고 그것을 만드십시오

mysql.default_socket = /path/to/mysql.sock


답변

비슷한 문제가 있었고 mysql 127.0.0.1대신 localhost.

이것은 아마도 호스트 설정에 문제가 있음을 의미하지만이 빠른 수정은 지금 당장 진행 중입니다.


답변

이것은 Apache HTTP기본 설치MySQL의 사용자 정의 설치 가있는 Mac OS X 용 입니다 .

대답은 @ alec-gorge의 탁월한 응답을 기반으로하지만 내 구성 (대부분 Mac OS X 특정 구성)에 구성하기 위해 몇 가지 특정 변경 사항을 Google에 검색해야했기 때문에 완전성을 위해 여기에 추가 할 것이라고 생각했습니다.

Apache HTTP에 대한 PHP5 지원 활성화

에서 PHP5 지원이 활성화되어 있는지 확인하십시오 /etc/apache2/httpd.conf.

php5_module 모듈 을로드 하려면 파일을 편집 sudo vi /etc/apache2/httpd.conf(요청시 암호 입력 ;)하고 줄의 주석을 제거 ( 시작 부분부터 제거 )합니다 .

LoadModule php5_module libexec/apache2/libphp5.so

Apache HTTP를 시작합니다 sudo apachectl start(또는 restart이미 시작되어 구성 파일을 다시 읽기 위해 다시 시작해야하는 경우).

/var/log/apache2/error_logphp5_module이 활성화되었음을 알려주는 줄이 있는지 확인하십시오 PHP/5.3.15.

[notice] Apache/2.2.22 (Unix) DAV/2 PHP/5.3.15 with Suhosin-Patch configured -- resuming normal operations

소켓 파일 이름 조회

MySQL이 실행 중일 때 (와 함께 ./bin/mysqld_safe) 로그 파일을 찾을 수있는 위치를 알려주는 디버그 행이 콘솔에 인쇄되어야합니다. 파일 이름의 호스트 이름을 기록해 두십시오. localhost제 경우에는 구성에 따라 다를 수 있습니다.

뒤에 오는 파일 Logging to이 중요합니다. MySQL이 작업을 기록하는 곳입니다.

130309 12:17:59 mysqld_safe Logging to '/Users/jacek/apps/mysql/data/localhost.err'.
130309 12:17:59 mysqld_safe Starting mysqld daemon with databases from /Users/jacek/apps/mysql/data

localhost.err파일을 엽니 다 (다시 말하지만, 이름이 다를 수 있음). 즉 tail -1 /Users/jacek/apps/mysql/data/localhost.err, 소켓 파일의 이름을 찾으려면 마지막 행이어야합니다.

$ tail -1 /Users/jacek/apps/mysql/data/localhost.err
Version: '5.5.27'  socket: '/tmp/mysql.sock'  port: 3306  MySQL Community Server (GPL)

.NET에서 socket:사용해야하는 소켓 파일 인 부분에 유의하십시오 php.ini.

MySQL에 로그인하고 실행하여 소켓의 파일 이름 위치를 결정하는 또 다른 방법 (일부는 더 쉬운 방법이라고 말합니다)이 있습니다.

show variables like '%socket%';

MySQL 지원으로 PHP5 구성-/etc/php.ini

php.ini라고하면 …

에서 /etc디렉토리있다 /etc/php.ini.default 파일. /etc/php.ini에 복사하십시오 .

sudo cp /etc/php.ini.default /etc/php.ini

mysql.default_socket을 열고 /etc/php.ini찾습니다 .

sudo vi /etc/php.ini

기본값은 mysql.default_socket입니다 /var/mysql/mysql.sock. 이전에 기록한 값으로 변경해야합니다 /tmp/mysql.sock. 제 경우에는 그렇습니다.

/etc/php.ini소켓 파일의 이름을 반영 하도록 파일을 바꿉니다 .

mysql.default_socket = /tmp/mysql.sock
mysqli.default_socket = /tmp/mysql.sock

최종 확인

Apache HTTP를 다시 시작하십시오.

sudo apachectl restart 

PHP5와 관련된 오류가 없는지 로그를 확인하십시오. 오류가 없다는 것은 끝났음을 의미하며 MySQL과 PHP5가 제대로 작동합니다. 축하합니다!


답변

구성 파일 (db 연결)에서 ‘localhost’를 ‘127.0.0.1’로 바꾸면 도움이되었습니다!


답변

mysql 서버를 다시 시작하면 도움이 될 수 있습니다. 제 경우에는 서버를 다시 시작하면 많은 시간이 절약되었습니다.

service mysql restart

PS- sudo service mysql restart루트가 아닌 사용자를위한 사용.


답변

먼저 MySQL이 실행 중인지 확인하십시오. 명령 : mysqld start

여전히 연결할 수없는 경우 : /etc/my.cnf는 어떻게 생겼습니까? (또는 /etc/msyql/my.cnf)

2002는 소켓 오류이기 때문에 소켓을 확인해야한다는 점에서 다른 2 개의 게시물은 정확합니다.

LAMP 설정에 대한 훌륭한 튜토리얼 : http://library.linode.com/lamp-guides/centos-5.3/index-print


답변

그다지 도움이되지는 않지만 MySQL 의 최신 버전 (및 그보다 최신 버전 )에서 오류 코드 2002는 “[소켓 이름] 소켓을 통해 로컬 MySQL 서버에 연결할 수 없습니다”를 의미하므로이를 알 수 있습니다. 조금 더.