WordPress Multisite 인스턴스를 두 번째 위치로 복사 한 후 DB 연결 오류


11

여기 내 설정이 있습니다. http://example.com 에서 실행중인 멀티 사이트 인스턴스가 있으며 개발 및 준비를 수행하려고합니다. 기존 WP의 다중 사이트 인스턴스를 localhost로 옮기는 것은 악몽이므로 대신 스테이징 위치에서 dev를 사용하겠습니다.

호스팅 계정의 / public_html / staging / 디렉토리를 가리 키도록 http://staging.example.com 을 설정하고 모든 WP 파일을 루트에서 / staging / 디렉토리로 복사했습니다. 또한 데이터베이스 파일 (SQL 덤프, 테이블을 새 데이터베이스로 가져 오기)을 복사하고 wp-config.php 파일을 새 데이터베이스를 가리 키도록 변경했습니다.

SQL을 실행하여 데이터베이스 레코드를 변경 한 후 wp-config.php 파일에서이 한 줄도 변경합니다.

/** Turning on WordPress MU, new in 3.0 */
define( 'MULTISITE', true );
define( 'SUBDOMAIN_INSTALL', false );
$base = '/';
define( 'DOMAIN_CURRENT_SITE', 'example.com' ); // <- I change this line
define( 'PATH_CURRENT_SITE', '/' );
define( 'SITE_ID_CURRENT_SITE', 1 );
define( 'BLOG_ID_CURRENT_SITE', 1 );

로 변경:

define( 'DOMAIN_CURRENT_SITE', 'staging.example.com' ); // <- now changed

내가로드 할 때 http://staging.example.com를 , 나는 좀 .. Error establishing database connection!

사용자 이름과 암호를 확인하고 세 번 확인하고 사용자가 새로운 준비 데이터베이스에 대한 모든 권한을 가지고 있는지 확인하고 DBHOST를 'localhost'로 두었습니다 (스테이징으로 변경하더라도). 도움이 될 수도 있습니다).

데이터베이스 연결이 실패하는 이유는 무엇입니까? 누군가? (도움을 주셔서 감사합니다.)

NB : http://example.com 은 다른 데이터베이스와 매우 유사한 db 연결 설정에서 제대로 작동하므로 데이터베이스 서버가 다운되는 데 문제가되지 않습니다.


흠. 아무도 없어? 이상한 오류입니다.
Jason Rhodes

Wordpress Network 마이그레이션을 내부에서 수행하려고 할 때 동일한 오류가 발생합니다. 호스트가 이동하지 않았습니다.
Mikko Ohtamaa

확인. 다양한 실패 모드를 추적하고 블로그 게시물을 만들었습니다 : opensourcehacker.com/2011/08/22/…
Mikko Ohtamaa

답변:


2

한 가지 생각-www.example.com/staging/wp-admin으로 이동하면 자동으로 www.example.com/wp-admin으로 리디렉션됩니다.

staging.example.com에서 example.com/staging으로의 리디렉션이 기존 설치와 충돌 할 수 있습니까?

업데이트 : 데이터베이스의 .htaccess 문제 및 복잡한 도메인 참조와 관련이있는 것으로 보입니다.

WP 코덱에서 :

워드 프레스 멀티 사이트 이동

데이터베이스 자체에는 폴더 위치뿐만 아니라 서버 이름에 대한 여러 참조가 있으므로 멀티 사이트는 이동하기가 훨씬 더 복잡합니다.

멀티 사이트를 이동하는 가장 좋은 방법은 파일을 이동하고 .htaccess 및 wp-config.php (멀티 사이트가 포함 된 폴더 이름이 변경된 경우)를 편집 한 다음 데이터베이스를 수동으로 편집하는 것입니다. 도메인 이름의 모든 인스턴스를 검색하고 필요에 따라 변경하십시오. 이 단계는 아직 쉽게 자동화 할 수 없습니다. 한 폴더에서 다른 폴더로 멀티 사이트를 이동하는 경우 폴더 이름을 올바르게 변경하려면 wp_blogs 항목을 편집해야합니다.


11

나는 그것을 해결했고 효과가 있었다 :)

에서 wp_blogs테이블,

오래된 구조

Domain : localhost/smart_facility_linux
Path : /

그러나 다음과 같이 작동하도록 변경했습니다.

루트 사이트의 경우 :

Domain : localhost
Path : /smart_facility_linux/

하위 사이트 1 (주 사이트 아래의 모든 하위 사이트, 방금 예를 들었습니다) :

Domain : localhost
Path : /smart_facility_linux/subsite1/

불행히도 나를 위해 일하지 않았다. 이것은 WP 데이터베이스에서 절대 경로를 사용하는 어리 석음의 완벽한 예입니다.
Pegues December

@Pegues 그것은 10 명 이상이 여기에서 일했습니다 :)
Pratik

1
나는 그것이 다른 사람들을 위해 일한 것을 기쁘게 생각합니다. 이것은 많은 사람들에게 효과가 없으며 하위 도메인에서 하위 디렉토리로 전환 할 때 db 값에 차이가 있기 때문에 내가 연구 한 결과입니다. 그리고 내 첫 번째 의견으로는 절대 경로를 사용하는 것이 WP가 현명하지 않습니다. 지금까지 없었으며 많은 문제의 원인입니다. 그리고 기업 수준에서는 CI / CD 파이프 라인을 사용하여 적절한 워크 플로를 설정할 수 없습니다.
Pegues

2

내가 찾은 도메인이나 호스트를 쉽게 이전 할 수있는 방법은 한 가지뿐입니다. 단일 및 다중 사이트 설치에서 완벽하게 작동합니다.

  1. 데이터베이스를 .sql 파일로 내 보냅니다. (나는 이것을 위해 PHPMyAdmin을 사용한다)
  2. 약간 다른 이름으로 편집 할 파일의 새 사본을 작성하십시오.
  3. 원하는 텍스트 편집기에서 파일을 엽니 다> (예 : gedit)
  4. 프로덕션에서 dev로 도메인 및 절대 경로 (/ home / username / public_html / ~ / home / username / public_html /)에서 찾기 / 바꾸기를 실행하십시오.
  5. 파일을 저장하십시오.
  6. 전체 설치를 개발 디렉토리에 복사하십시오.
  7. wp-config.php 파일에 다음 줄을 추가하십시오 :

    define ( 'RELOCATE', true);

  8. 로그인하여 퍼머 링크 설정을 저장하십시오.

  9. wp-config.php에 넣은 정의 규칙을 제거하십시오.


1
위젯 또는 테마 옵션과 같은 직렬화 된 데이터의 문자열을 길이가 다른 문자열로 바꾸는 경우를 제외하고는 잘 작동합니다. 직렬화 된 데이터는 다음과 같습니다-s : 76 : "hxxp : //www-dev.example.com/wp-content/uploads/company_logo_swoosh.gif ''s : 70 :"hxxp : //www.example.com/ wp-content / uploads / company_logo_swoosh.gif '(참고 : 길이 76 및 70은 더 이상 제시된 문자열과 일치하지 않습니다. 사이트 세부 정보를 편집하고 새 문자 수를 추적하지 않았습니다.) 유일한 해결책은 다음과 같습니다. 수동으로 개수를 업데이트하거나 준비 도메인 길이를 동일하게 유지합니다.
marfarma

나는 또한 tt를 xx로 교체하여 URL이 가려지지 않도록했습니다-당신은 그들 사이의 차이점을 볼 수 없었습니다.
marfarma

알아두면 좋습니다. 즉, 모든 항목을 찾아서 바꾸는 대신 찾아서 교체 할 때마다 모든 항목을 살펴보아야합니다.
Jeff Sebring

1
: 당신은 직렬화 데이터를 대체 / 검색이 스크립트를 사용할 수 interconnectit.com/products/...
코스타
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.