경고: mysqli_real_connect(): (HY000/2002)1452행의 /private/tmp/wordpress/wp-includes/wp-db.php에 이러한 파일 또는 디렉토리가 없습니다.
WordPress 플러그인을 해제하기 위해 PHPunit을 실행하려고 하는데 제목에 오류가 계속 나타납니다.
WP-CLI를 사용하여 unittest를 설정했는데 WP-CLI도 실행하려고 하면 비슷한 오류가 발생합니다.
데이터베이스를 실행하기 위해 MAMP를 사용합니다.
WP-CLI 및 PHPnit을 ~/.bash-profile에서 별칭을 가진 phars로 설정하고 OS X에서 제공하는 기본 "php"로 실행했습니다. 이를 변경하고 MAMP 고정 WP-CLI에서 제공하는 최신 버전의 PHP를 사용하여 WP-CLI 및 PHPnit을 실행하고 데이터베이스에 연결 중이었습니다.
wp-config.php 파일을 편집하여 호스트를 ":/path/to/mamp/mysql.socket", "localhost:/path/to/mamp/mysql.socket" 및 "127.0.0.1"로 설정해 봤지만 아무 것도 도움이 되지 않았습니다.
난 완전히 갇혀서 다음에 뭘 해야 할지 모르겠어.
방금 이 오류가 발생했습니다. 스키마가 존재하는지 확인하셨나요?wp-config.php
명기되어 있습니까?
저 같은 경우에는 만드는 것을 완전히 잊어버렸기 때문에 수정은 매우 간단합니다.CREATE DATABASE wordpress
.
또, 이 에러가 발생한 적이 있습니다.wp-config.php
데이터베이스 호스트가 잘못되었습니다(스와프 시도).localhost
그리고.127.0.0.1
).
먼저 MySql이 실제로 실행 중인지 확인합니다.프로세스가 시작되지 않으면 소켓 파일이 생성되지 않습니다.
netstat -tulpn | grep mysql
또는
ps -e | grep mysql
MySql이 실행 중인 경우 다음 위치에서 데이터베이스 호스트 변경localhost
로.127.0.0.1
wp-config로 설정합니다.php는 동작하지만 회피책일 뿐입니다.
지정한 경우localhost
,그mysqli_real_connect()
함수는 찾을 수 없는 Unix 소켓을 통해 데이터베이스에 연결을 시도합니다(따라서 "no scheat file" 오류).지정한 경우127.0.0.1
는, 동작하는 디폴트의 TCP 포토(통상은 3306)를 사용해 데이타베이스에의 접속을 시도합니다.
그렇다고 해서 PHP가 MySql 소켓을 찾을 수 없는 문제는 해결되지 않습니다.에서 다음 옵션을 설정해야 합니다.php.ini
소켓의 위치는 OS에 따라 다르지만 일반적으로 를 실행하여 찾을 수 있습니다.locate mysql.sock
CentOS 6.8에서 사용할 수 있는 설정은 다음과 같습니다.
php.ini
pdo_mysql.default_socket = /var/lib/mysql/mysql.sock
mysqli.default_socket = /var/lib/mysql/mysql.sock
기타 시스템은 일반적으로 사용/tmp/mysqld.sock
MySql 컨피규레이션파일을 체크하면, 설정이 끝난 장소를 확인할 수 있습니다.my.cfg
.
올바른 소켓 위치를 가리키도록 PHP를 구성한 후 Apache/nginx를 재시작하여 새 설정을 선택합니다.
, 그럼 에는 '어울릴 수 .localhost
의도한 대로.
phpMyAdmin으로 이동하여 데이터베이스를 클릭한 후 에서 서비스를 실행하고 있는IP를 복사하여 wp-config.php 파일로 바꿉니다.
/** MySQL 호스트명 */ define ('DB_HOST', 'localhost') ;
/** MySQL 호스트명 */ define ('DB_HOST', 'ip_where_is_running_mysqlserver');
Localhost를 MySQL Server를 실행하는 IP로 바꿉니다.
그것은 나를 혼란스럽게 만들었지만 결국 나는 해결했다.
MySQL 포트는 3308이기 때문에 127.0.0.1을 localhost:3308로 변경합니다.
$cfg['Servers'][$i]['host'].
됐다!
게다가, 나는
$cfg['Servers'][$i]['controluser'] = '';
$cfg['Servers'][$i]['controlpass'] = '';
그리고...
$cfg['Servers'][$i]['auth_type'] = 'cookie';
하지만 가장 중요한 것은 포트 변경이라고 생각합니다.
wp-cli
것이 더이고, 을 편집하고, 것입니다.wp-config
filename을 클릭합니다.
MAC Sierra와 MAMP PRO를 위해 이 작업을 수행했습니다.
후.netstat
netstat -a | grep mysql
.var
더입니니다다
cd /var
sudo mkdir mysql
sudo chmod 755 mysql
cd mysql
sudo ln -s /Applications/MAMP/tmp/mysql/mysql.sock mysql.sock
WordPress가 설치된 폴더의 wp 플러그인 목록이 작동합니다.
/path/to/wordpress/installation $ wp plugin list
-------------------------------------------------+----------+-----------+---------+
| name | status | update | version |
+-------------------------------------------------+----------+-----------+---------+
| advanced-custom-fields | active | none | 5.9.0 |
| akismet | active | none | 4.1.6 |
| bbp-voting | inactive | available | 1.3.5 |
| breadcrumb-navxt | active | none | 6.5.0 |
| contact-form-7 | active | none | 5.2.2 |
| flamingo | active | none | 2.2 |
| keydesign-addon | active | none | 3.2 |
| post-my-contact-form-7 | active | none | 4.1.8 |
/wp-includes/wp-db.php(WordPress v 4.5의 1489줄)의 보고 행에는 코드가 다음과 같이 표시됩니다.
mysqli_real_connect( $this->duh, $host, $this->dbuser, $this->dbpassword, null, $port, $socket, $client_flags );
「」를 하면, 됩니다.@
는 다음과 같습니다따라서 코드는 다음과 같습니다.
@mysqli_real_connect( $this->duh, $host, $this->dbuser, $this->dbpassword, null, $port, $socket, $client_flags );
된 「」를 합니다.@
변경된 파일을 저장하고 업로드하여 경고가 사라지도록 합니다.
언급URL : https://stackoverflow.com/questions/32809896/warning-mysqli-real-connect-hy000-2002-no-such-file-or-directory-in-priv
'programing' 카테고리의 다른 글
TypeError: JSON 개체는 'bytes'가 아닌 str이어야 합니다. (0) | 2023.03.11 |
---|---|
허브 클래스 외부에서 SignalR 사용자 연결 ID를 가져오려면 어떻게 해야 합니까? (0) | 2023.03.11 |
ReactJS에서 하위 구성요소에서 상위 구성요소로 데이터를 전달하는 방법은 무엇입니까? (0) | 2023.03.11 |
angularjs의 배수는 $http입니다.요구를 받다 (0) | 2023.03.11 |
Reactjs에 setState()의 동기 대체가 있습니까? (0) | 2023.03.11 |