Premium editie
Het private NextPDF-premiumpakket installeren en authenticeren met Composer
In één oogopslag
Sectie met titel “In één oogopslag”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.
Waar je gegevens vandaan komen
Sectie met titel “Waar je gegevens vandaan komen”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.
1. Waar de premiumpakketten leven
Sectie met titel “1. Waar de premiumpakketten leven”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:
composer config repositories.nextpdf composer https://repo.example.com/nextpdfVervang 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.
Methode A — auth.json (lokale ontwikkeling)
Sectie met titel “Methode A — auth.json (lokale ontwikkeling)”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:
composer config --auth http-basic.repo.example.com your-username your-tokenDit 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:
export COMPOSER_AUTH='{"http-basic":{"repo.example.com":{"username":"your-username","password":"your-token"}}}'composer installInjecteer 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:
composer config --global --auth http-basic.repo.example.com your-username your-tokenDit 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.
4. Gegevens buiten versiebeheer houden
Sectie met titel “4. Gegevens buiten versiebeheer houden”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.jsontoe aan.gitignorezodat 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 eenauth.jsonin 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.
5. Installeren en verifiëren
Sectie met titel “5. Installeren en verifiëren”Met de repository en de gegevens op hun plek require je de editie waar je licentie recht op geeft:
# Pick the package for your entitlement:composer require nextpdf/pro# orcomposer require nextpdf/enterprise# or the metapackage, which the licensing page uses:composer require nextpdf/premiumPin 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:
# Use the package name you actually required:composer show nextpdf/pro# orcomposer show nextpdf/enterprise# orcomposer show nextpdf/premiumAls 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:
composer dump-autoloadAls 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.
<?phprequire __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.
Problemen oplossen
Sectie met titel “Problemen oplossen”401 Unauthorized of 403 Forbidden
Sectie met titel “401 Unauthorized of 403 Forbidden”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.
Token werkt lokaal maar faalt in CI
Sectie met titel “Token werkt lokaal maar faalt in CI”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.
Verkeerde host-sleutel
Sectie met titel “Verkeerde host-sleutel”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.