2012-12-25 4 views
0

Apache2 가상 호스트에서 RMode stat을 사용하여 원하는대로 mod_ruid2가 작동합니다. 나는 웹 사이트 폴더에 프로세스를 chroot하기 위해 RDocumentChRoot를 추가했는데 PHP가 MySQL 데이터베이스에 연결할 수 없다는 원치 않는 부작용이 있습니다. 나는 도움을 googled 아무것도 찾을 수 없습니다.Apach2 mod_ruid2 및 RDocumentChRoot - MySQL 데이터베이스에 연결할 수 없습니다.

누군가 내게 로프를 던질 수 있습니까?

+1

정교한 셋업에 : 사람이 내가 틀렸다 생각한다면

, 어떻게 런타임 구성에서이 문제를 우회하는 방법 알려주세요. 실제 지시어와 경로 레이아웃 개요는이 점을 답할만한 질문으로 만들 수 있습니다. 추신 : mysql 소켓 thingy가 어디에 살고 있는지 알아보십시오. – mario

+0

"PS : mysql 소켓 thingy가 어디에 있는지 알아 내라."LOL 나는 그 성명서만큼이나 단서가 없다. LOL 저는 리눅스 장치가 파일 시스템의 일부로 취급된다는 것을 알고 있습니다. 소켓도 같은 방식으로 취급됩니까? – James

+0

소켓에 대한 나의 질문을 완벽하게하기 위해 "실제 소켓"은 일반 파일로 취급되지 않지만 mysqld 및 일부 다른 응용 프로그램은 때때로 "소켓 파일"(대개 * .sock 형식)을 만듭니다. 파이프를 실제 소켓으로 리디렉션합니다. – James

답변

1

"mysql socket thingy"를 언급 한 Mario에게 감사드립니다. 주위를 검색 한 후 MySQLD는 연결을 수신하는 선택적 방법으로 mysqld.sock이라는 파일을 사용한다는 것을 알았다. 시스템에서 'locate * .sock'을 실행하면 .sock 파일이 표시됩니다. dkim-filter는 또한 .sock 파일을 사용합니다. 내가 읽은 또 다른 웹 사이트에 따르면 소켓 파일은 응용 프로그램에서 만든 FIFO 파일이며 다른 소켓 구성 작업을 거치지 않고 응용 프로그램이 서로 통신 할 수 있도록하는 리디렉션 파이프 역할을합니다.

내가 물어볼 경우, chroot 된 PHP 프로세스는 chroot 밖에 있기 때문에 .sock 파일에 접근 할 수 없다. 다행히 PHP는 연결 변수 때문에 .sock 파일을 사용한다고 추론했습니다. WordPress에서 기본 구성은 'localhost'를 사용합니다. PHP에서 'localhost'를 지정하면 PHP가 네트워크 연결을 수행하는 대신 .sock 파일을 찾게됩니다. 'localhost'를 '127.0.0.1'로 변경하면 문제가 정상적으로 해결되었습니다. 하드 링크 나 다른 해결 방법이 필요하지 않았습니다.

0

유용하다고 생각되는 this PHP bug에 의견을 추가했습니다.

PHP 소스를 읽은 한, 런타임에서 동작을 변경할 수 없습니다. 소스가 TCP를 통해 작동하도록 수정해야합니다. D