Sıklıkla Karşılaşılan WP-CLI Sorunları
WP-CLI kurulum ve komut işlemlerinin ardından kurulum ve komut uygulama süreçlerinde sıklıkla karşılaşılan bazı hatalara ve bu hataların nasıl çözülebileceğinden bahsetmek istiyorum.
WP-CLI İşlem ve Kurulum Hataları
Hataları kurulum itibariyle ele alabiliriz. Bu aşamada en sık karşılaşılan hatalardan biri wp-cli kurulumunun doğru bir şekilde takma ad ile ilişkilendirilmemesi olabilir.
wp: command not found
WP-CLI işlemleri wp-cli.phar adında bir PHP Arşiv dosyası aracılığıyla gerçekleştirilmektedir. wp: command not found
hatasını almamızın muhtemel nedenlerinden biri ilgili dosyanın sunucunuzda bulunmaması olabilir. Bu aşamada önerim ilgili dosyanın varlığını kontrol etmeniz ve/veya kurulumu yinelemeniz olacaktır.
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
curl ile wp-cli.phar
dosyasını edindiğimizde php
komutu ile dosyayı belirli sınırlandırmalar dahilinde kullanabiliriz. Örneğim;
php wp-cli.phar --info
Ancak bu yeterli olmayacaktır ve bazı temel dosya izinlerini düzenlemeli ve alias oluşturmalıyız. Örneğin, wp-cli.phar
kurulu dizin dışında ilgili komutu çalıştırmak istediğimizde aşağıdaki hatayı alabiliriz.
Could not open input file: wp-cli.phar
Bu nedenle alias tanımlaması yapmamız uygun olacaktır. Bu işlem için öncelikle wp-cli.phar
dosyasını güvenli ve belirli bir alana taşımamız uygun olacaktır. Bu bir zorunluluk değildir ancak tavsiye edilir.
mv wp-cli.phar /usr/local/bin/wp
Son olarak ilgili alias tanımını .bashrc
dosyasına wp-cli.phar
yolunu gösterecek şekilde eklemeliyiz. Bu işlem için aşağıdaki komutu uygulayabilirsiniz. Komut .bashrc
dosyasının en alt satırına ilgili tanımlamayı yapacak ve .bashrc
dosyasındaki değişikliği işleyecektir.
echo "alias wp='/usr/local/bin/wp'" >> ~/.bashrc && source ~/.bashrc && wp cli info
Kendiniz ilgili tanımı eklemek isterseniz nano ~/.bashrc
komutuyla .bashrc
dosyasını metin editörü ile açıp alias wp='/usr/local/bin/wp'
satırını ekleyebilir ve ardından değişikliği source ~/.bashrc
ile işleme alabilirsiniz. Dosya yüklenmiş ise, alias işlemi yapılmış ve hala aynı hatayı alıyorsanız bu defa alias (takma) tanımlamasının yapılmamış ya da hatalı yapılmış olma ihtimali üzerinde durabiliriz. Bu nedenle yukarıdaki adımları sırasıyla kontrol etmenizi öneririm.
-bash: /usr/local/bin/wp: Permission denied
Bu hata wp-cli.phar
veya /usr/local/bin/wp
dosyasının dosya izinleri komutu kullanmaya (execution) uygun olmadığı anlamına gelmektedir. Alias işlemi gerçekleştirmediyseniz wp-cli.phar
dosyasının bulunduğu dizine geçerek şu komutu uygulamalısınız.
chmod +x wp-cli.phar
Alias işleminden sonra bu uyarıyı almışsanız dosyayı taşımış olduğumuz için yeni yolu üzerinden tanımlama yapmamız gerekir. Uygulayacağımız komut şu şekildedir:
chmod +x /usr/local/bin/wp
It looks like you’re running this as root
DigitalOcean gibi servisler üzerinden işlem yaptığımız durumlarda SSH bağlantısını ilk aşamada ve çoğu durumda root
kullanıcı üzerinden gerçekleştirmemiz muhtemeldir. Bu durumda güvenlik uyarısı olarak başlıkta belirtilen hata dönecektir. Bu hatayı almamak için her komutumuzun sonuna --allow-root
ifadesini ekleyebiliriz. Tanımlı bir başka kullanıcı üzerinden işlem yürütmek istersek ise şu komutu kullanabiliriz:
sudo -u [kullanici-adi] -i -- wp [komut]
Elbette tüm bunları bir yana bırakıp barındıra alanında işlemler yürütmek amacıyla yeni bir kullanıcı oluşturabiliriz.
adduser [yeni-kullanici-adi]
usermod -aG sudo [yeni-kullanici-adi]
su - [yeni-kullanici-adi]
Artık [yeni-kullanici-adi]
aracılığıyla root
bildirimi almadan işlemler gerçekleştirebiliriz.
No such file or directory
wp
komutunun uygulandığı dizinde bir WordPress kurulumu mevcut değilse ve/veya config.yml dosyası oluşturulup içeriğinde ön tanımlı bir WordPress yolu belirtilmemişse bu hata alınabilir.
-bash: /home/[kullanici-adi]/bin/wp: No such file or directory
Bu durumda ya ilgili dizin içerisinde komutlar uygulanmalı, ya config.yml
dosyası oluşturularak ön tanımlı bir WordPress yolu belirtilmeli ya da --path=[wordpress-yolu]
ile WordPress kurulumu işaret edilmelidir.
Örneğin;
wp post list --path='/var/www/html/'
--path
ile sunucuda birden fazla WordPress kurlumu mevcutsa komutları bu farklı kurulumları belirterek kontrol edebilirsiniz.
qtranxf_postsFilter()
Warning: Parameter 2 to qtranxf_postsFilter() expected to be a reference, value given in /home/[kullanici-adi]/public_html/.../.../wp-includes/class-wp-hook.php on line 286
qTranslate X eklentisi qTranslate XT adıyla geliştirilmeye devam ediliyor. Bu süreçte qTranslate X eklentisi ile ilgili problemler de düzenlenmekte. qtranxf_postsFilter() hatası da qTranslate X yerine qTranslate XT eklentisini kullanmanız durumunda ortadan kalkacaktır. Ayrıca --skip-plugins
ile eklentileri komut işleminin dışında tutarak da bu hataların dönmesini önlemek mümkün.
wp post list --skip-plugins
URL Redirect
Eğer eklentileriniz arasında bir yönlendirme (redirect) eklentisi mevcutsa (WP Force SSL, Redirection gibi) wp komutlarını uyguladığınızda aşağıdakine benzer dönüşler alabilirsiniz.
Some code is trying to do a URL redirect. Backtrace:
#0 WP_CLI\Utils\wp_redirect_handler(https://) called at [/home/[kullanici-adi]/public_html/.../.../wp-includes/class-wp-hook.php:288]
#1 WP_Hook->apply_filters(https://, Array ([0] => https://,[1] => 301)) called at [/home/[kullanici-adi]/public_html/.../.../wp-includes/plugin.php:203]
#2 apply_filters(wp_redirect, https://, 301) called at [/home/[kullanici-adi]/public_html/.../.../wp-includes/pluggable.php:1203]
Bu gibi durumlarda --skip-plugins
, --skip-themes
, --skip-packages
gibi parametrelerle eklenti, paket ve temaları wp
işlemlerinin dışında tutabilmekteyiz.
wp post list
wp post list --skip-plugins
wp post list --skip-plugins --skip-themes --skip-packages
Alias not found
Takma adlar (alias) ile WordPress kurulumlarınızı işaretlemişseniz (bkz. config.yml) ve wp
komutlarında belirttiğiniz isimleri çağırdığınızda Error: Alias '@x' not found.
hatası alıyorsanız şu durumlardan biri söz konusu olabilir;
- Alias tanımında yazım hatası söz konusu olabilir (ifadenin başında @ da yer almalı)
.bashrc
içeriğindeWP_CLI_CONFIG_PATH
belirtilmemiş olabilir (bkz. WP-CLI Config Komutu ve İşlemleri) ya da.bashrc
değişikliği işlenmemiş olabilir;source ~/.bashrc
. Unutmadan Oh My Zsh kullanımında ilgili konfigürasyon işlemlerinin~/.zshrc
üzerinden yürütülmesi gerekir. Config.yml yerine ilgili alias tanımı bulunulan dizinde oluşturulacak bir wp-cli.yml ve/veya wp-cli.local.yml (Örn. wp-cli.blog.yml veya wp-cli.kisisel.yml gibi) ile de gerçekleştirilebilir. Bu durumda ilgili dosyanın oluşturulduğundan ve doğru dosya üzerinden işlem gerçekleştirdiğinizden emin olmalısınız.
Alias yeni eklenmişse rewrite flush ile işlenmemiş olabilir; wp @takma-ad rewrite flush
Sonuç Olarak
WP-CLI işlemlerinde sıklıkla karşılaşılan hata ve uyarı mesajlarına karşılık alternatif çözüm yöntemlerini de listeler halinde yukarıda paylaştım. Zaman içerisinde karşılaştığım ya da mesaj/yorum yoluyla iletilen konular olursa yukarıdaki listeyi güncelleyerek içeriği genişleteceğim.