Ga naar inhoud
getnextpdf.com

Premium editie

Het private NextPDF-premiumpakket installeren en authenticeren met Composer

De NextPDF-premiumpakketten — nextpdf/pro, nextpdf/enterprise en het nextpdf/premium-metapakket — zijn niet gepubliceerd op de publieke Packagist-index. Ze leven in een private Composer-repository die aan je account is gekoppeld, dus een gewone composer require nextpdf/premium kan ze niet vinden totdat je Composer twee dingen vertelt: waar de repository is en hoe je je ertegen authenticeert.

Deze pagina pakt op waar Licentiëring en activering ophoudt. Zodra je gegevens hebt, configureer je Composer eenmalig, installeer je het pakket en verifieer je het. Alles hier is standaard Composer-gedrag; niets ervan is NextPDF-specifieke tooling. Behandel je repository-token als een API-key, precies zoals de licentiepagina de ondertekende licentie-envelop behandelt: houd het buiten publiek versiebeheer.

Je private repository-URL, gebruikersnaam en token worden uitgegeven nadat je een licentie hebt verkregen — hetzij door te kopen via onze Merchant of Record, hetzij door een evaluatie te starten — vanuit het licentieportaal. Zie Kopen en licentiëren voor het aankooptraject, het tweecontractenmodel (aankoop versus licentie) en wie je kunt benaderen voor facturering versus producthulp.

Je licentieportaal geeft twee dingen uit voor de installatie:

  • Een private Composer repository-URL — het geauthenticeerde endpoint dat de premiumpakketten aanbiedt.
  • Een gebruikersnaam en token (een HTTP Basic-credentialpaar) voor dat endpoint.

Waar deze pagina een repository-host toont, vervang die door de repository-URL uit je licentieportaal. Waar ze een gebruikersnaam of token toont, vervang die door de gegevens die voor je account zijn uitgegeven. NextPDF publiceert geen enkele gedeelde URL; het endpoint en de gegevens zijn specifiek voor je abonnement.

2. De private repository toevoegen aan composer.json

Sectie met titel “2. De private repository toevoegen aan composer.json”

Vertel Composer over de repository met één commando, uitgevoerd in de root van je project:

Terminal window
composer config repositories.nextpdf composer https://repo.example.com/nextpdf

Vervang https://repo.example.com/nextpdf door de URL uit je portaal. Het repositorytype composer wijst Composer naar een index in Composer-formaat (een packages.json), wat een private pakket-endpoint aanbiedt.

Dat commando schrijft een repositories-blok in composer.json. Je kunt het ook met de hand toevoegen:

{
"repositories": {
"nextpdf": {
"type": "composer",
"url": "https://repo.example.com/nextpdf"
}
}
}

De repositorydefinitie is geen secret — die noemt alleen een locatie, dus het is veilig om te committen. De gegevens in de volgende stap zijn wat je moet beschermen.

3. Authenticeren met een van drie standaardmethoden

Sectie met titel “3. Authenticeren met een van drie standaardmethoden”

Composer leest HTTP Basic-gegevens voor een host uit verschillende plekken. Kies de methode die past bij waar je installeert.

Sla op een ontwikkelaarsmachine de credential op in een auth.json-bestand naast composer.json. Gebruik de host van je repository-URL als de sleutel:

Terminal window
composer config --auth http-basic.repo.example.com your-username your-token

Dit maakt (of werkt bij) een projectlokale auth.json:

{
"http-basic": {
"repo.example.com": {
"username": "your-username",
"password": "your-token"
}
}
}

De host-sleutel (repo.example.com) moet exact overeenkomen met de host in de repository-URL — Composer koppelt gegevens aan requests op basis van de host.

Methode B — omgevingsvariabele COMPOSER_AUTH (CI/CD)

Sectie met titel “Methode B — omgevingsvariabele COMPOSER_AUTH (CI/CD)”

In continuous integration wil je doorgaans geen bestand op schijf. Composer leest dezelfde gegevens uit de omgevingsvariabele COMPOSER_AUTH, waarvan de waarde een JSON-string is met dezelfde vorm als auth.json:

Terminal window
export COMPOSER_AUTH='{"http-basic":{"repo.example.com":{"username":"your-username","password":"your-token"}}}'
composer install

Injecteer COMPOSER_AUTH vanuit de secret store van je CI-provider (gemaskeerde variabele, secret of vault-binding) zodat het token nooit verschijnt in de pipelinedefinitie of de buildlog.

Methode C — globale per-gebruikersauthenticatie (gedeeld werkstation)

Sectie met titel “Methode C — globale per-gebruikersauthenticatie (gedeeld werkstation)”

Om elk project voor de huidige gebruiker te authenticeren zonder een per-projectbestand, schrijf je de credential in de globale auth.json van Composer:

Terminal window
composer config --global --auth http-basic.repo.example.com your-username your-token

Dit slaat de credential op onder je Composer-thuismap (COMPOSER_HOME, bijv. ~/.composer/auth.json of ~/.config/composer/auth.json). Het geldt voor alle projecten die je als die gebruiker bouwt, dus geef de voorkeur aan Methode A of B wanneer een credential beperkt moet blijven tot één project of pipeline.

De repository-URL is veilig om te committen; het token niet. Twee regels houden secrets buiten je geschiedenis:

  • Negeer het lokale auth-bestand. Voeg auth.json toe aan .gitignore zodat een projectlokale credential nooit wordt gecommit:

    /auth.json
  • Injecteer het token in CI/CD. Lever COMPOSER_AUTH (Methode B) vanuit de secret store van je pipeline in plaats van een auth.json in te checken in de repository of het in een containerimage-laag te bakken.

Als een token ooit wordt gecommit of geprint, roteer het dan via je licentieportaal — behandel het als gecompromitteerd, precies zoals je een gelekte API-key zou behandelen.

Met de repository en de gegevens op hun plek require je de editie waar je licentie recht op geeft:

Terminal window
# Pick the package for your entitlement:
composer require nextpdf/pro
# or
composer require nextpdf/enterprise
# or the metapackage, which the licensing page uses:
composer require nextpdf/premium

Pin een major-versie als je project expliciete constraints verkiest — bijvoorbeeld composer require nextpdf/pro:^3, overeenkomend met de constraint die de Pro-modulepagina’s gebruiken.

Verifieer dat Composer het private pakket heeft opgelost en dat de autoloader ervan werkt. Bevestig eerst dat het pakket is geïnstalleerd door composer show <installed-package> uit te voeren voor de editie die je hebt gerequired — bijvoorbeeld composer show nextpdf/pro, composer show nextpdf/enterprise of composer show nextpdf/premium:

Terminal window
# Use the package name you actually required:
composer show nextpdf/pro
# or
composer show nextpdf/enterprise
# or
composer show nextpdf/premium

Als composer show het pakket en de versie ervan rapporteert, is het private pakket opgelost. Het opnieuw uitvoeren van composer dump-autoload regenereert de autoloader vervolgens schoon, zodat de klassen van het pakket vindbaar zijn:

Terminal window
composer dump-autoload

Als optionele controle op codeniveau kun je bevestigen dat een klasse uit je geïnstalleerde editie autoloadt. Gok geen klassenaam: open de API-referentie voor de editie die je hebt geïnstalleerd en kies een willekeurige gedocumenteerde publieke klasse, en test dan of die oplost. Welke klasse je moet zoeken hangt af van je editie — een klasse die in de ene editie wordt meegeleverd, kan in een andere afwezig zijn, en het autoloaden van één klasse bewijst alleen dat zijn editie aanwezig is, niet dat elke editie is geïnstalleerd.

<?php
require __DIR__ . '/vendor/autoload.php';
// Replace the placeholder with a documented public class from YOUR edition's
// API reference. Do not hardcode a class from a different edition.
$class = 'Your\\Installed\\Edition\\DocumentedClass';
var_dump(class_exists($class));

Het pakket installeren is niet hetzelfde als het activeren. Het pakket alleen verleent geen Pro- of Enterprise-capaciteiten — de ondertekende licentie die je activeert selecteert de actieve editie. Volg na een geslaagde installatie Licentiëring en activering om de licentie-envelop te plaatsen en te activeren, en stel voor ionCube-gecodeerde builds de ionCube Loader in.

Composer bereikte de repository, maar de gegevens werden geweigerd of waren onvoldoende. Bevestig dat de host-sleutel in auth.json / COMPOSER_AUTH exact overeenkomt met de repository-host (geen scheme, geen pad, geen afsluitende slash), dat de gebruikersnaam en het token actueel zijn en dat het token niet is verlopen of geroteerd in je portaal. Een 401 wijst op een verkeerde of ontbrekende credential; een 403 wijst op een geldige credential waarvan de scope niet het pakket of de editie omvat die je hebt aangevraagd — controleer of je abonnement recht geeft op de pakketnaam die je require’t.

Pakket niet gevonden / “could not find a matching version”

Sectie met titel “Pakket niet gevonden / “could not find a matching version””

Dit betekent meestal dat Composer de private index niet gebruikte of bereikte (en dus alleen de publieke Packagist doorzocht), of dat het de index bereikte maar geen installeerbaar pakket of versie vond die overeenkomt. Bevestig dat het repositories.nextpdf-blok bestaat in de composer.json van dit project met "type": "composer" en de juiste URL, en dat je de exacte pakketnaam require’t (nextpdf/pro, nextpdf/enterprise of nextpdf/premium). Voer composer config repositories uit om te printen wat Composer ziet. Een typefout in de URL of een ontbrekend repositoryblok is een veelvoorkomende oorzaak, maar controleer ook of je versieconstraint overeenkomt met een gepubliceerde versie, of de PHP-platformvereiste van je project (en minimum-stability) het pakket toelaat, en of de entitlement van je token het pakket dat je require’t daadwerkelijk dekt.

De lokale auth.json is niet aanwezig op de runner. Stel COMPOSER_AUTH in vanuit de secret store van je CI (Methode B) in plaats van te vertrouwen op een bestand, en zorg dat de variabele wordt geëxporteerd voordat composer install draait. Geef in gecontaineriseerde builds het secret mee tijdens de build zonder het in een image-laag te bewaren.

Gegevens worden gekoppeld op basis van host. Als de repository-URL https://repo.example.com/nextpdf is, moet de sleutel repo.example.com zijn — niet de volledige URL en niet een subpad. Een niet-overeenkomende sleutel maakt dat Composer de request ongeauthenticeerd verstuurt, wat zich voordoet als een 401.