WordPress Multisite örneğini ikinci bir konuma kopyaladıktan sonra DB bağlantı hatası


11

İşte kurulumum. Http://example.com adresinde çalışan bir Multisite örneğim var ve geliştirme ve aşamalandırma yapmak istiyorum. Varolan bir Multisite WP örneğini localhost'a taşımak bir kabus, bu yüzden bunun yerine bir hazırlama konumunda dev yapacağım.

Kurduğum http://staging.example.com barındırma hesabı / public_html / evreleme / dizinine noktasına ve / hazırlık / dizine benim kökünden WP tüm dosyaları kopyalandı. Ayrıca veritabanı dosyalarını da kopyaladım (SQL dökümü, tabloları yeni bir veritabanına aktardım) ve wp-config.php dosyasını yeni veritabanına işaret edecek şekilde değiştirdim.

Veritabanı kayıtlarını değiştirmek için SQL çalıştırdıktan sonra, wp-config.php dosyasında da bu tek satırı değiştiriyorum:

/** 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 );

Olarak değiştirildi:

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

Http://staging.example.com yüklediğimde ... Error establishing database connection!

Kullanıcı adını ve şifreyi kontrol ettim ve üç kez kontrol ettim, kullanıcının yeni hazırlama veritabanında tüm ayrıcalıklara sahip olduğundan emin oldum ve DBHOST'u 'localhost' olarak bıraktım (staging.example.com olarak değiştirilmesine rağmen yardım).

Veritabanı bağlantısı neden başarısız olur? Kimse? (Yardımınız için şimdiden teşekkür ederiz.)

Not: http://example.com , sadece farklı bir veritabanı ile çok benzer db bağlantı ayarlarında iyi çalışıyor, bu yüzden veritabanı sunucusunun kapalı olması sorunu değil.


Hmm. Kimse, ha? Kesinlikle garip bir hata.
Jason Rhodes

Wordpress Network geçişini yerinde yapmaya çalışırken aynı hatayla karşılaştım - ana bilgisayar taşınmadı
Mikko Ohtamaa

Tamam. Çeşitli hata modlarını izledim ve bunların bir blog gönderisini yaptım: opensourcehacker.com/2011/08/22/…
Mikko Ohtamaa

Yanıtlar:


2

Bir düşünce - www.example.com/staging/wp-admin adresine gittiğimde beni otomatik olarak www.example.com/wp-admin adresine yönlendiriyor

Staging.example.com sitesinden example.com/staging adresine yönlendirme, mevcut yüklemeyle çakışıyor olabilir mi?

GÜNCELLEME: veritabanındaki .htaccess sorunları ve karmaşık alan başvuruları ile ilgili olabileceği anlaşılıyor

WP Kodeksi'nden:

Hareketli WordPress Çok Sitesi

Çok sitenin taşınması çok daha karmaşıktır, çünkü veritabanının kendisi sunucu adına ve klasör konumlarına birden fazla referans içerir.

Çoklu Siteyi taşımanın en iyi yolu dosyaları taşımak, .htaccess ve wp-config.php dosyasını (Çoklu Siteyi içeren klasör adı değiştiyse) düzenlemek ve sonra veritabanını el ile düzenlemektir. Alan adınızın tüm örneklerini arayın ve gerektiğinde değiştirin. Bu adım henüz otomatikleştirilemez. Multisite'ı bir klasörden diğerine taşıyorsanız, klasör adını doğru bir şekilde değiştirmek için wp_blogs girişlerini düzenlediğinizden emin olmanız gerekir.


11

Çözdüm ve işe yaradı :)

In wp_blogsmasa,

Eski yapı oldu

Domain : localhost/smart_facility_linux
Path : /

Ama ben şu şekilde çalışması için değiştirdim:

Kök site için:

Domain : localhost
Path : /smart_facility_linux/

Alt site 1 için (ana site altındaki herhangi bir alt site için, sadece örnek verdim):

Domain : localhost
Path : /smart_facility_linux/subsite1/

Ne yazık ki benim için çalışmadı. Bu, WP için veritabanında mutlak yollar kullanmanın aptallığına mükemmel bir örnektir.
Pegues

@Pegues burada 10+ kişi için işe yaradı :)
Pratik

1
Başkaları için çalıştığı için mutluyum. Bu pek çok insan için işe yaramaz - ve araştırdıklarımdan, alt alandan alt dizine geçerken db değerlerinde bir fark olduğu için. Ve ilk yorumuma göre, WP tarafından mutlak yolların kullanımı akıllıca değil. Hiç bu kadar çok sorunun nedeni olmamıştı. Ayrıca, kurumsal düzeyde CI / CD ardışık düzeniyle uygun bir iş akışı oluşturmak gerçekten mümkün değildir.
Pegues

2

Bulduğum alan adı veya ana makinenin kolay aktarımını yapmanın tek bir yolu var. Tek ve çok tesisli kurulumlarda benim için kusursuz çalışıyor.

  1. Veritabanınızı bir .sql dosyasına verin. (Bunun için PHPMyAdmin kullanıyorum)
  2. Düzenlenecek dosyanın biraz farklı bir adla yeni bir kopyasını oluşturun.
  3. Dosyayı tercih ettiğiniz metin düzenleyicide açın> (örneğin gedit)
  4. Üretimden geliştiriciye AND etki alanı VE mutlak yolunda (/ home / kullanıcı adı / public_html / / / home / kullanıcı adı / public_html /) bul / değiştir komutunu çalıştırın.
  5. Dosya 'yı kaydet.
  6. Tüm kurulumu geliştirme dizininize kopyalayın.
  7. Wp-config.php dosyanıza aşağıdaki satırı ekleyin:

    ( 'Yerini değiştirmek' doğru) tanımlar;

  8. Giriş yapın ve kalıcı bağlantı ayarlarınızı kaydedin.

  9. Wp-config.php dosyasına koyduğunuz tanım kuralını kaldırın.


1
Widget veya tema seçeneği gibi serileştirilmiş verilerdeki bir dizeyi farklı uzunlukta bir dizeyle değiştirmemeniz dışında, bu iyi çalışır. Serileştirilmiş veriler şöyle görünür: 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 '(not: 76 ve 70 uzunlukları artık sunulan dizelere karşılık gelmiyor - Site bilgilerimi düzenledim ve yeni karakter sayısını takip etmedim.) Bunun tek çözümü sayıları manuel olarak güncellemek - veya hazırlama alanı uzunluğunu aynı tutmak.
marfarma

Ayrıca URL'lerin gizlenmemesi için tt'yi xx ile değiştirdim - aralarındaki farkı göremiyordunuz.
marfarma

Bunu bilmek güzel. Bu, en azından tümünü değiştirmek yerine tüm girişleri bulduklarında ve değiştirdiklerinde zaman geçirmemiz gerektiği anlamına gelir.
Jeff Sebring

1
Serileştirilmiş verileri aramak / değiştirmek için bu komut dosyasını kullanabilirsiniz: interconnectit.com/products/…
Costa
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.