NextPDF premium sürümleri için ionCube Loader kurulumu
Bir bakışta
“Bir bakışta” başlıklı bölümBazı NextPDF premium dağıtımları ionCube ile kodlanmış PHP olarak teslim edilir; bu nedenle kod çalışmadan önce eşleşen ionCube Loader’ın PHP çalışma zamanınıza kurulu olması gerekir. Bu durum şunlar için geçerlidir:
- NextPDF Pro ve Enterprise deneme derlemeleri ve
- NextPDF Pro resmi (ücretli) derlemesi.
NextPDF Enterprise resmi teslimatı için paketleme mekanizması sözleşmenize bağlıdır. Belirli bir çalışma zamanını varsaymak yerine lisans koşullarınızdaki teslimat talimatlarını izleyin; Lisanslama ve etkinleştirme bölümüne bakın.
Bu sayfa pratik bir kurulum kılavuzudur: ionCube nedir, Loader nasıl kurulur ve doğrulanır, ücretli ve ionCube ile kodlanmış Pro derlemesi için lisans dosyası nereye gider, konteynerlerde nasıl çalıştırılır ve sık karşılaşılan hatalar nasıl giderilir. Desteklenen PHP sürümü 8.4’tür ve kurduğunuz Loader bu çalışma zamanıyla tam olarak eşleşmelidir.
ionCube nedir ve NextPDF onu neden kullanır
“ionCube nedir ve NextPDF onu neden kullanır” başlıklı bölümionCube, ionCube Loader adlı ücretsiz bir çalışma zamanı bileşeniyle eşleştirilmiş ticari bir PHP kodlayıcısıdır. Loader bir PHP (Zend) uzantısıdır. PHP başlatıldığında Loader, kodlanmış dosyaların çözülmesine ve yürütülmesine olanak tanır; Loader olmadan kodlanmış bir dosya çalışamaz ve PHP bunun yerine bir loader hatası bildirir.
NextPDF, tescilli premium kaynak kodunu korumak için ionCube kodlamasını kullanır; bunu yaparken yine de diğer herhangi bir Composer paketi gibi dağıttığınız ve çalıştırdığınız, kurulabilir PHP teslim eder. Kodlama, kitaplığı nasıl çağırdığınızı değiştirmez — uygulamanız aynı genel sözleşmeleri hedefler — yalnızca Loader’ın çalışma zamanında bulunması gereksinimini ekler.
Loader indirmeleri ile yetkili, sürüme özgü talimatlar için ioncube.com adresindeki satıcı belgelerini (ionCube Loader belgeleri ve kurulum kılavuzu) kullanın. Bu sayfa NextPDF’e özgü kurulumu kapsar; Loader’ın kendisi için doğruluk kaynağı satıcıdır.
Gereksinimler
“Gereksinimler” başlıklı bölümPHP çalışma zamanınızla her eksende eşleşen ionCube Loader’ı kurun. Bunlardan herhangi birindeki bir uyumsuzluk, en sık karşılaşılan başarısızlık nedenidir:
| Eksen | Eşleşmesi gereken |
|---|---|
| PHP sürümü | 8.4 (NextPDF premium >=8.4 <9.0 gerektirir). |
| İşletim sistemi | Loader paketinin hedeflediği işletim sistemi (Linux, Windows, macOS). |
| Mimari | Ana makinenin CPU mimarisi, genellikle 64 bit (x86-64 veya aarch64). |
| İş parçacığı güvenliği | PHP derlemenizle eşleşen, iş parçacığı güvenli olmayan (NTS) veya iş parçacığı güvenli (ZTS). |
Loader’ın ötesinde şunlara da ihtiyacınız vardır:
- Composer aracılığıyla kurulmuş NextPDF premium paketi —
nextpdf/pro,nextpdf/enterpriseveyanextpdf/premiummetapaketi. - Ücretli derlemeler için lisans dosyanız. Ücretli ve ionCube ile kodlanmış Pro derlemesi için aşağıdaki Lisans yerleşimi bölümüne bakın.
Geçerli derleme değerlerinizi okumak için php -i çalıştırın (veya phpinfo()
çağırın) ve PHP Version, Architecture ve Thread Safety satırlarını
denetleyin. Çoğu CLI ve PHP-FPM dağıtımında iş parçacığı güvenliği devre
dışıdır (NTS); bazı platformlardaki klasik Apache mod_php ise ZTS’dir.
Loader paketini bu kesin değerler için indirin.
Loader’ı kurun
“Loader’ı kurun” başlıklı bölümAşağıdaki adımlar genel akıştır. Geçerli paketin tam dosya adları ve dizin düzeni için ioncube.com adresindeki ionCube Loader belgelerine başvurun.
-
Ortamınızla eşleşen Loader paketini indirin (PHP 8.4; işletim sisteminiz, mimariniz ve NTS/ZTS). Paket, her PHP sürümü ve iş parçacığı güvenliği çeşidi için bir loader dosyası içerir.
-
Loader dosyasını PHP uzantı dizinine yerleştirin.
php -itarafından bildirilenextension_dir’i kullanın. Linux/macOS’ta dosyaioncube_loader_<os>_8.4.so’dur (ZTS derlemesi için..._8.4_ts.sokullanın); Windows’ta iseioncube_loader_win_8.4.dll’dir (veya..._ts.dllZTS çeşidi). -
Bunu
php.iniiçinde birzend_extensionolarak kaydedin. ionCube Loader, düz birextensionolarak değil, birzend_extensionolarak yüklenmeli ve diğer uzantılardan önce yüklenmelidir. Loader dosyasına mutlak bir yol kullanarak tek bir satır ekleyin:zend_extension=/full/path/to/ioncube_loader_lin_8.4.soWindows’ta
.dlldosyasının tam yolunu kullanın:zend_extension="C:\php\ext\ioncube_loader_win_8.4.dll"Platformunuz
conf.dtarzı içerme dizinleri kullanıyorsa, Loader’ın diğer uzantılardan önce başlatılması için bu satırı erken okunan bir dosyaya (örneğin bir00-ioncube.ini) yerleştirin. -
PHP çalışma zamanını yeniden başlatın. PHP-FPM’i, web sunucunuzu (Apache/Nginx) yeniden başlatın ya da yalnızca CLI’yı yeniden çalıştırın — uygulamanızı hangisi çalıştırıyorsa. Uzun süre çalışan bir işlem, yeniden başlatılana kadar eski yapılandırmayı korur.
Doğrulayın
“Doğrulayın” başlıklı bölümNextPDF’i yüklemeyi denemeden önce Loader’ın etkin olduğunu doğrulayın.
Önce PHP sürüm afişini denetleyin. Loader kurulu olduğunda php -v, onu
adlandıran bir satır ekler:
php -vPHP 8.4.x (cli) ... with Zend OPcache v8.4.x, ... with the ionCube PHP Loader ...“with the ionCube PHP Loader” ifadesi, Loader’ın o çalışma zamanı için etkin
olduğunun işaretidir. Bir web (FPM / mod_php) dağıtımı için CLI afişi yeterli
değildir — o çalışma zamanı farklı bir php.ini kullanabilir. Web çalışma
zamanını, web sunucusu tarafından sunulan küçük bir betikle doğrulayın:
<?php// loader-check.php — delete after verifying.var_dump(extension_loaded('ionCube Loader'));phpinfo(); // The output includes an "ionCube PHP Loader" section when active.Son olarak, bir NextPDF premium sınıfının gerçekten Composer’ın otomatik yükleyicisi üzerinden yüklendiğini doğrulayın. Bu, kodlanmış kodun uçtan uca çalıştığını kanıtlar:
<?phprequire __DIR__ . '/vendor/autoload.php';
// A premium class resolves only when the Loader can decode the package.var_dump(class_exists(\NextPDF\Pro\Document\PdfPortfolio::class));php -v Loader’ı adlandırıyorsa, web phpinfo() ionCube bölümünü gösteriyorsa
ve premium sınıfı çözümleniyorsa, Loader doğru biçimde kurulmuştur.
Lisans yerleşimi (ücretli, ionCube ile kodlanmış Pro derlemesi)
“Lisans yerleşimi (ücretli, ionCube ile kodlanmış Pro derlemesi)” başlıklı bölümionCube, basit bir lisanslama modeli kullanır: kodlanmış kod, çalışma zamanında bir lisans dosyası arar ve dosya eksik, okunamaz veya süresi dolmuş olduğunda çalışmayı reddeder. Bu, ücretli ve ionCube ile kodlanmış Pro derlemesi için geçerlidir — bunun için satın alımınızın sağladığı lisans dosyasını, çalışma zamanının bulabileceği bir yere yerleştirirsiniz.
Bu ionCube lisans dosyası mekanizması, ionCube ile kodlanmış derlemeye özgüdür. NextPDF Enterprise resmi teslimatının burada ionCube ile kodlanmış olduğu varsayılmaz; onun paketlemesi ve lisans işlemesi, lisans koşullarınızca yönetilir — Lisanslama ve etkinleştirme bölümüne bakın.
Kesin yollar ortama özgüdür; bu nedenle bunu genel tutun:
- Lisans dosyasını, NextPDF teslimat talimatlarınızın belirttiği konuma koyun — genellikle kodlanmış paketin yanına ya da uygulamanın okuyabileceği bir dizine. PHP işlem kullanıcısının okuma iznine sahip olduğundan emin olun.
- Talimatlarınız söylemediği sürece dosyayı yeniden adlandırmayın; loader belirli bir adı arar.
- Konteynerlerde ve salt okunur dağıtımlarda, lisans dosyasını imaja ya da çalışma zamanının gördüğü yazılabilir ve okunabilir bir yola bağlayın veya kopyalayın (Docker ve konteynerler bölümüne bakın).
Lisans dosyası, etkinleştirmeyi çalışma zamanı düzeyinde yönetir; sürümünüzü ve özelliklerinizi seçen uygulama düzeyindeki lisanstan ayrıdır. Koşullar, süreler ve aboneliğinizin neleri kapsadığı için Lisanslama ve etkinleştirme bölümüne ve lisans sözleşmenize bakın — bu sayfa lisans koşullarını tanımlamaz.
Sorun giderme
“Sorun giderme” başlıklı bölüm”Loader not installed” / “Failed loading … ioncube_loader”
“”Loader not installed” / “Failed loading … ioncube_loader”” başlıklı bölümLoader, kodu çalıştıran çalışma zamanında etkin değildir veya yol yanlıştır.
zend_extension satırının, mutlak bir yola sahip mevcut bir dosyaya işaret
ettiğini, çalışma zamanını yeniden başlattığınızı ve php -v / phpinfo() ile
aynı çalışma zamanını (CLI veya FPM) doğruladığınızı yeniden denetleyin. Bir
Failed loading iletisi genellikle dosyanın var olduğu ancak PHP derlemesiyle
eşleşmediği anlamına gelir (sonraki maddeye bakın).
PHP sürümü, NTS/ZTS veya mimari uyumsuzluğu
“PHP sürümü, NTS/ZTS veya mimari uyumsuzluğu” başlıklı bölümFarklı bir PHP sürümü, iş parçacığı güvenliği modu ya da mimari için derlenmiş
bir Loader yüklenmez. php -i çıktısından PHP Version, Thread Safety ve
Architecture değerlerini doğrulayın, ardından PHP 8.4 için eşleşen NTS/ZTS
ve bit genişliğine sahip Loader dosyasını kurun. 8.4 ile 8.4_ts (veya
_ts.dll) sonekleri, iş parçacığı güvenliği seçicisidir — yanlış olanı kullanmak
sık yapılan bir hatadır.
Loader yükleme sırası
“Loader yükleme sırası” başlıklı bölümionCube Loader bir zend_extension olmalı ve diğer uzantılardan önce
başlatılmalıdır. Loader’ın diğer uzantılardan sonra yüklendiğine dair uyarılar
görürseniz, onun zend_extension satırını daha öne taşıyın — ya da bir conf.d
düzeniyle, içerme dosyasına ilk sıralanan bir ad verin (örneğin 00-ioncube.ini).
CLI, FPM ve web sunucusu farklı php.ini dosyaları kullanır
“CLI, FPM ve web sunucusu farklı php.ini dosyaları kullanır” başlıklı bölümPHP genellikle CLI için, PHP-FPM ya da mod_php için kullandığından farklı bir
php.ini yükler. Yalnızca CLI’yı yapılandırmak, web çalışma zamanını Loader’sız
bırakır (ya da tersi). CLI’nın hangi dosyayı kullandığını görmek için php --ini
çalıştırın ve web phpinfo() çıktısındaki Loaded Configuration File satırını
denetleyin. zend_extension satırını, NextPDF’i çalıştıran her php.ini’ye
ekleyin ve her çalışma zamanını yeniden başlatın.
Lisans dosyası bulunamadı veya süresi doldu
“Lisans dosyası bulunamadı veya süresi doldu” başlıklı bölümÜcretli ve ionCube ile kodlanmış Pro derlemesi için eksik, okunamaz ya da süresi dolmuş bir lisans dosyası, kodlanmış kodun çalışmasını durdurur. Dosyanın beklenen konumda olduğunu, PHP işlem kullanıcısının onu okuyabildiğini ve süresinin dolmadığını doğrulayın. Yenileme ve süre soruları için Lisanslama ve etkinleştirme bölümüne ve lisans sözleşmenize bakın.
OPcache etkileşimleri
“OPcache etkileşimleri” başlıklı bölümOPcache, derlenmiş betikleri önbelleğe alır; ancak ionCube ile kodlanmış dosyalar
çalışma zamanında Loader tarafından çözülür. Loader’ı ya da onun yapılandırmasını
değiştirdiyseniz ve çalışma zamanı hâlâ Loader yokmuş gibi davranıyorsa, sıcak
yeniden yüklemeye güvenmek yerine PHP çalışma zamanını yeniden başlatın (bu,
OPcache’i temizler). ionCube zend_extension’ı, OPcache’ten önce yüklenmesi için
kayıtlı tutun; ikisi bir arada bulunur ve php -v her ikisini de listelemelidir.
Docker ve konteynerler
“Docker ve konteynerler” başlıklı bölümKonteynerli bir dağıtımda Loader’ı imaj içinde kurun ve onun ana makinenizin değil, konteynerin PHP derlemesiyle eşleştiğinden emin olun. Temel imaj; PHP sürümünü, işletim sistemini, mimariyi ve iş parçacığı güvenliği modunu sabitler; bu nedenle Loader paketini bu değerler için indirin.
Tipik bir imaj derlemesi:
- Bir PHP 8.4 temel imajından başlayın (NTS mı yoksa ZTS mi olduğuna dikkat
edin — resmi
php:8.4-cli/8.4-fpm/8.4-apacheetiketleri NTS’tir,ztsiçeren etiketler ise iş parçacığı güvenlidir; Loader’ı eşleşecek biçimde seçin). - Eşleşen ionCube Loader dosyasını imajın
extension_dir’ine ekleyin. zend_extension=...satırını imajınphp.ini’sine (ya da birconf.diçermesine) yazın.- Ücretli ve ionCube ile kodlanmış Pro derlemesi için lisans dosyasını, imaja kopyalayarak ya da çalışma zamanında konteynerin okuyabileceği bir yola bağlayarak sağlayın.
Loader imaja gömülü olduğundan, aynı konteyner her yerde aynı biçimde çalışır. Daha sonra temel imajın PHP’sini yükseltirseniz, Loader dosyasını yeni çalışma zamanıyla eşleşen derlemeyle değiştirin.