HTML2PDF output error

HTML2PDF kullanırken çözemediğim bir şekilde çözemediğim bir şekilde aşağıdaki hatayla karşılaşıyordum.

Sorunu çözdüm ve aynı hatayla karşılaşan arkadaşlar için bir not yazma ihtiyacı hissettim. Şuanda üzerinde çalıştığım projede kullanıcıya pdf çıktı veriyoruz, projeyi laravel ile yazdığım için html2pdf kütüphanesini kullanmaya karar verdim. Kütüphaneyi laravel ile çalıştırdıktan sonra ilginç bir şekilde exampleların düzgün çalıştığını ancak ben herhangi bir değişiklik yaparsam yukardaki hatanın ortaya çıktığını gördüm. Biraz debeleneden sonra sorunun çözdüm.  Normalde aşağıdaki gibi çıktı alıyoruz.

Biz çıktı aldıktan sonra laravel’in çalışması devam ettiği için bu hata oluşuyor. $html2pdf->Output('exemple08.pdf', 'I');  Bu satırın hemen altına exit(); şekline çalışmayı durdurucu bir komut girerseniz sorun ortadan kalkıyor.

Laravel’de eventleri nereye koyacağım?

Creating-Registration-Events-in-Laravel-4

Laravel build-in olarak eventleri yazabileceğiniz bir dosya ile birlikte gelmiyor. Eventleri kullanacaksanız event dosyasını kendiniz oluşturmalısınız. Bunu yapmak için aşağıdaki adımları izleyebilirsiniz.

Öncelikle app/start/global.php dosyasını açın ve en alt satırına aşağıdaki satırı ekleyin.

require app_path().'/listeners.php';

Ardından app/dizini altına listeners.php isminde bir dosya oluşturun.
Eventlerinizi buraya yazabilirsiniz.

Basitçe örnek event kullanımından bahsedecek olursak

Örneğin blog yazılımı yazdınız her yazı kaydedildiğinde eklenen yazıyı twitter’a post etmek istiyorsunuz. Kodları tutupta blog yazıları modülünün içine yazarsanız bu ilerde işler karışabilir. Bu nedenle blog yazısı kayıt edildiği anda bir event tetikliyorsunuz, daha sonra bu event’i başka bir dosyada yakalayarak istediğiniz işlemleri orada gerçekleştiriyorsunuz.

Bir event tetiklemek için.
$event = Event::fire('auth.login', array($user));

Tetiklenen bir eventi yakalamak için

Bu işlemi az önce oluşturduğunuz listeners.php dosyasında yapabilirsiniz.

ZPanel Roundcube parola değiştirme

Bildiğiniz gibi zpanel kurduğunuzda roundcube içinde geliyor. Bilindiği gibi directadmin gibi lisans ücreti isteyen yönetim panellerinde mail adreslerinin şifreleri direk olarak roundcube üzerinden değiştirilebiliyor. Zpanel üzerinden bunu yapmak istediğinizde ise başarılı olamıyorsunuz. Çünkü SQL driver’ı düzgün çalışmıyor. Bunu çözmeye çalışırken başka bir driver buldum ve sorunsuz çalışıyor.

Parola değiştirme işlemini aktifleştirmek için aşağıdaki adımları gerçekleştirin

Öncelikle aşağıdaki dizindeki dosyayı oluşturun ve vereceğim kodları içine yapıştırın. 27. satırda başlayan yazılmış database bilgilerini kendinize göre değiştirmeyi unutmayın.

/etc/zpanel/panel/etc/apps/webmail/plugins/password/drivers/zpmail.php /etc/zpanel/panel/etc/apps/webmail/plugins/password/config.inc.php

Yukarıda dizinini verdiğim dosyayı editleyin. Eğer böyle bir dosya yoksa dikkat edin, config.inc.php.dist şeklinde bulunuyor olabilir. Bu dosyada driver dışında herşeyi aynı bırakabilirsiniz. Tabiki ihtiyacınıza göre değişiklikler yapın. Parolada minumum karakter sayısı vs.

Son olarak eğer password plugin’i aktif durumda değilse /etc/zpanel/panel/etc/apps/webmail/config/main.inc.php  dosyasındaki plugins array’ine password plugin’ini de ekleyin.

İşlem tamam. Artık roundcube ayarlarından parolanızı değiştirebilirsiniz.

Laravel public dizinini kaldırma

Normalde Laravel framework çekirdek dosyaları sunucudaki root klasörünün bir üst dizininde bulunuyor. Dolayısı ile domain üzerinden kaynak dosyalara erişim engellenmiş oluyor. Bu her ne kadar süper bir şey olsa da paylaşımlı hosting kullanan kişiler için acı verici. Çünkü bu tip durumlarda genelde public_html dizini üzerine çıkamıyorsunuz veya virtual host özelleştirmesi yapamıyorsunuz.

Peki böyle bir durumda ne yapmalı?

Laravel’i yayına atarken URL’den public dizinini kaldırmak için aşağıdaki adımları izleyin.

1 – Public dizini içinde ne varsa hepsini bir üst dizine taşıyın.
2 – Ana dizindeki index.php (public klasöründen geldi) dosyasının 21. satırında bulunan

require __DIR__.'/../bootstrap/autoload.php';

satırını

require __DIR__.'/bootstrap/autoload.php';

şeklinde değiştirin.

Aynı dosya içersinde 35. satırda bulunan

$app = require_once __DIR__.'/../bootstrap/start.php';

bölümünü

$app = require_once __DIR__.'/bootstrap/start.php';

şeklinde değiştirin.

3- bootstrap/paths.php dosyasını açın ve 35. satırı aşağıdaki gibi değiştirin.

'public' => __DIR__.'/..',

4- İçi boş kalan public dizinini silin.

5- Artık public dizini diye bir şey yok, ancak laravel vendor vb. dizinler url üzerinden erişilebilir durumda. Bu klasörlere erişimi de htaccess ile engelleyelim. Ana dizinde bulunan .htaccess dosyasına aşağıdaki satırları ekleyin.

Herşey tamam. Böylelikle en kolay şekilde laravel public klasörünü kaldırmış olduk.

Eğer daha pratik bir çözüm kullanan arkadaş varsa deneyimlerini yorum olarak bekliyorum.

Sitenizin domain’ini değiştirmek

Domain Taşımak

Eğer bir sitenizi olduğu gibi yeni bir siteye aktarmak istiyorsanız (domain değiştirmek istiyorsanız) öncelikle dikkat etmeniz gereken bir şey var. Google. Eğer bu işlemi herhangi bir işlem gerçekleştirmeksizin yaparsanız Google yeni sitenin aynen eski siteden kopyalandığını düşünebilir ve bu kötü sonuçlar doğurabilir.

Diğer bir taraftan eski sitenizin hala arama sonuçlarında çıkıyor olması da yeni sitenizin ziyaret sayısını düşürecektir. Eğer Google Analytics kullanıyorsanız yeni sitenize yeni bir takip kodu oluşturursanız, eski istatistiklerinizi kaybetmis olacaksınız ki bu da kimsenin istemeyeceği bir şey.

Peki ne yapmak gerekiyor ?

Yapacağımız işlem eski sitenin aynısını yeni domain üzerinden yayına aldıktan sonra eski sitedeki tüm bağlantıları yeni siteye aktarmak, daha sonra arama sonuçlarında domain’in değişmesi için Google’a haber vermek. Ardından da Analytics bilgilerimizi yenileyerek yeni domain üzerinden verileri toplamaya başlamak.

Hemen Başlayalım

1 – Herşeyin yedeğini alın. Eğer bir sorun çıkarsa sitenizden olmayın…
2 – Eski sitenizin aynısını yeni domain üzerinden yayına alın ve herşeyin çalıştığından emin oldun.
3 – Yeni sitenizi Google Web Master üzerinden doğrulayın.
4 – Google Web Master TOOLS’dan eski sitenize gidin. Sağ üstteki ayarlar kısmından Change of Address / Adres Değiştir bölümüne tıklayın. Alt kısımdan yeni domainizi seçtikten sonra isteği gönderin.
5 – İsteği gönderikten sonra eski sitenizi tamamen silin, ROOT’a yeni bir htaccess dosyası oluşturun. İçeriği aşağıdaki gibi olacak. www.eskisite.com, www.yenisite.com bölümlerini kendinize göre düzenleyin.

Bu işlem tamamlandıktan sonra Google’da site:eskisiteniz.com şeklinde arama yapın. Sonuçlardan birisine tıklayıp, yeni sitenize başarıyla yönlendirme yaptığınızı doğrulayın. Eğer herşey çalışıyorsa Analytics doğrulamasını yapıp işimizi bitirebiliriz.

6 – Google Analytics’e erişin sitenizin istatistiklerinizi görüntülediğiniz sayfadayken sağ üstteki Admin/Yönetim linkine tıklayın. PROPERTY/MÜLK kısmında PROPERTY Settings / Mülk Ayarları linkine tıklayarak site adresinizi yenileyin.

İşlem tamam. Artık Google’da arama yapanlar ve eski sitenizi bulanlar otomatik olarak yeni sitenize geliyor. Ayrıca eski domain’iniz kısa zamanda Google sonuçlarından kaldırılacak ve yeni sitenizin adı ile değiştirilecek.