İçeriğe geç

NextPDF premium sürümleri için ionCube Loader kurulumu

Bazı 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, 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.

PHP ç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:

EksenEşleşmesi gereken
PHP sürümü8.4 (NextPDF premium >=8.4 <9.0 gerektirir).
İşletim sistemiLoader paketinin hedeflediği işletim sistemi (Linux, Windows, macOS).
MimariAna makinenin CPU mimarisi, genellikle 64 bit (x86-64 veya aarch64).
İş parçacığı güvenliğiPHP 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/enterprise veya nextpdf/premium metapaketi.
  • Ü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.

Aş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.

  1. 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.

  2. Loader dosyasını PHP uzantı dizinine yerleştirin. php -i tarafından bildirilen extension_dir’i kullanın. Linux/macOS’ta dosya ioncube_loader_<os>_8.4.so’dur (ZTS derlemesi için ..._8.4_ts.so kullanın); Windows’ta ise ioncube_loader_win_8.4.dll’dir (veya ..._ts.dll ZTS çeşidi).

  3. Bunu php.ini içinde bir zend_extension olarak kaydedin. ionCube Loader, düz bir extension olarak değil, bir zend_extension olarak 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.so

    Windows’ta .dll dosyasının tam yolunu kullanın:

    zend_extension="C:\php\ext\ioncube_loader_win_8.4.dll"

    Platformunuz conf.d tarzı 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 bir 00-ioncube.ini) yerleştirin.

  4. 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.

NextPDF’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:

Terminal window
php -v
PHP 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:

<?php
require __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üm

ionCube, 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.

”Loader not installed” / “Failed loading … ioncube_loader”

“”Loader not installed” / “Failed loading … ioncube_loader”” başlıklı bölüm

Loader, 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).

Farklı 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.

ionCube 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üm

PHP 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.

Ü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, 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.

Konteynerli 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:

  1. 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-apache etiketleri NTS’tir, zts içeren etiketler ise iş parçacığı güvenlidir; Loader’ı eşleşecek biçimde seçin).
  2. Eşleşen ionCube Loader dosyasını imajın extension_dir’ine ekleyin.
  3. zend_extension=... satırını imajın php.ini’sine (ya da bir conf.d içermesine) yazın.
  4. Ü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.