ข้ามไปยังเนื้อหา
getnextpdf.com

Premium รุ่น

ติดตั้งและยืนยันตัวตนแพ็กเกจ NextPDF premium ส่วนตัวด้วย Composer

แพ็กเกจ NextPDF premium — nextpdf/pro, nextpdf/enterprise และเมตาแพ็กเกจ nextpdf/premiumไม่ได้ เผยแพร่บนดัชนี Packagist สาธารณะ แต่อยู่ใน repository ส่วนตัวของ Composer ที่ผูกกับบัญชีของคุณ ดังนั้นคำสั่ง composer require nextpdf/premium ธรรมดาจึงหาไม่พบจนกว่าคุณจะบอก Composer สองสิ่ง คือ repository อยู่ ที่ไหน และจะยืนยันตัวตนเข้าไป อย่างไร

หน้านี้ต่อจากจุดที่ การออกใบอนุญาตและการเปิดใช้งาน จบไว้ เมื่อคุณมีข้อมูลรับรองแล้ว ให้กำหนดค่า Composer หนึ่งครั้ง ติดตั้งแพ็กเกจ แล้วตรวจสอบ ทุกอย่างในที่นี้เป็นพฤติกรรมมาตรฐานของ Composer ไม่มีส่วนใดที่เป็น เครื่องมือเฉพาะของ NextPDF จัดการโทเคน repository ของคุณเหมือนกับ API key ในแบบเดียวกับที่หน้าการออกใบอนุญาตจัดการซองใบอนุญาตที่ลงนามแล้ว คือเก็บให้พ้นจาก version control สาธารณะ

URL ของ repository ส่วนตัว username และโทเคนของคุณจะออกให้หลังจากที่คุณได้รับ ใบอนุญาต — ไม่ว่าจะโดยการซื้อผ่าน Merchant of Record ของเราหรือโดยการเริ่ม การประเมิน — จาก พอร์ทัลใบอนุญาต สำหรับเส้นทางการซื้อ โมเดลสองสัญญา (การซื้อเทียบกับใบอนุญาต) และผู้ที่ควรติดต่อ ในเรื่องการเรียกเก็บเงินเทียบกับความช่วยเหลือด้านผลิตภัณฑ์ โปรดดู การซื้อและการให้สิทธิ์การใช้งาน

พอร์ทัลใบอนุญาตของคุณออกสองสิ่งสำหรับการติดตั้ง

  • URL ของ repository ส่วนตัวของ Composer — endpoint ที่ต้องยืนยันตัวตนซึ่งให้บริการ แพ็กเกจ premium
  • username และโทเคน (คู่ข้อมูลรับรองแบบ HTTP Basic) สำหรับ endpoint นั้น

ที่ใดก็ตามที่หน้านี้แสดงโฮสต์ของ repository ให้แทนที่ด้วย URL ของ repository จากพอร์ทัลใบอนุญาตของคุณ ที่ใดก็ตามที่แสดง username หรือโทเคน ให้แทนที่ด้วย ข้อมูลรับรองที่ออกให้บัญชีของคุณ NextPDF ไม่ได้เผยแพร่ URL ที่ใช้ร่วมกันเพียงตัวเดียว endpoint และข้อมูลรับรองเป็นของเฉพาะสำหรับการสมัครสมาชิกของคุณ

บอก Composer ให้รู้จัก repository ด้วยคำสั่งเดียว รันที่รากของโปรเจกต์ของคุณ

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

แทนที่ https://repo.example.com/nextpdf ด้วย URL จากพอร์ทัลของคุณ ประเภท repository แบบ composer ชี้ Composer ไปยังดัชนีในรูปแบบ Composer (ไฟล์ packages.json) ซึ่งเป็นสิ่งที่ endpoint แพ็กเกจส่วนตัวให้บริการ

คำสั่งนั้นเขียนบล็อก repositories ลงใน composer.json คุณยังเพิ่มเองด้วยมือได้

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

นิยามของ repository ไม่ใช่ ความลับ — มันเพียงระบุตำแหน่งเท่านั้น จึงปลอดภัยที่จะ commit ข้อมูลรับรองในขั้นตอนถัดไปต่างหากที่คุณต้องปกป้อง

Composer อ่านข้อมูลรับรอง HTTP Basic สำหรับโฮสต์จากหลายแห่ง เลือกวิธีที่ตรงกับ สถานที่ที่คุณกำลังติดตั้ง

สำหรับเครื่องของนักพัฒนา ให้เก็บข้อมูลรับรองไว้ในไฟล์ auth.json ข้างๆ composer.json ใช้ โฮสต์ ของ URL repository ของคุณเป็นคีย์

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

คำสั่งนี้สร้าง (หรืออัปเดต) ไฟล์ auth.json ที่อยู่ในระดับโปรเจกต์

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

คีย์โฮสต์ (repo.example.com) ต้องตรงกับโฮสต์ใน URL ของ repository พอดี — Composer จับคู่ข้อมูลรับรองกับคำขอตามโฮสต์

ในระบบ continuous integration โดยปกติคุณไม่ต้องการไฟล์บนดิสก์ Composer อ่าน ข้อมูลรับรองเดียวกันจากตัวแปรสภาพแวดล้อม COMPOSER_AUTH ซึ่งค่าของมันคือสตริง JSON ที่มีรูปร่างเดียวกับ auth.json

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

ฉีดค่า COMPOSER_AUTH จากที่เก็บความลับของผู้ให้บริการ CI ของคุณ (ตัวแปรที่ถูก ปิดบัง, ความลับ หรือการเชื่อม vault) เพื่อให้โทเคนไม่ปรากฏในนิยามไปป์ไลน์หรือใน build log

Method C — auth แบบ global ต่อผู้ใช้ (เวิร์กสเตชันที่ใช้ร่วมกัน)

หัวข้อที่มีชื่อว่า “Method C — auth แบบ global ต่อผู้ใช้ (เวิร์กสเตชันที่ใช้ร่วมกัน)”

หากต้องการยืนยันตัวตนให้ทุกโปรเจกต์ของผู้ใช้ปัจจุบันโดยไม่ต้องมีไฟล์ต่อโปรเจกต์ ให้เขียนข้อมูลรับรองลงใน auth.json แบบ global ของ Composer

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

คำสั่งนี้เก็บข้อมูลรับรองไว้ใต้ไดเรกทอรีบ้านของ Composer (COMPOSER_HOME เช่น ~/.composer/auth.json หรือ ~/.config/composer/auth.json) มันมีผลกับทุกโปรเจกต์ที่คุณ build ในฐานะผู้ใช้นั้น ดังนั้นจึงควรเลือก Method A หรือ B เมื่อข้อมูลรับรองควรจำกัดขอบเขตอยู่ที่โปรเจกต์หรือไปป์ไลน์เดียว

URL ของ repository ปลอดภัยที่จะ commit ส่วนโทเคนไม่ปลอดภัย สองกฎที่ช่วยเก็บ ความลับให้พ้นจากประวัติของคุณ

  • ละเว้นไฟล์ auth ในเครื่อง เพิ่ม auth.json ลงใน .gitignore เพื่อไม่ให้ ข้อมูลรับรองที่อยู่ในระดับโปรเจกต์ถูก commit เลย

    /auth.json
  • ฉีดโทเคนใน CI/CD ให้ค่า COMPOSER_AUTH (Method B) จากที่เก็บความลับของ ไปป์ไลน์ของคุณ แทนที่จะ commit ไฟล์ auth.json ลงใน repository หรือฝังลงในเลเยอร์ ของ container image

หากมีโทเคนใดถูก commit หรือถูกพิมพ์ออกมา ให้หมุนเปลี่ยนผ่านพอร์ทัลใบอนุญาตของคุณ — จัดการกับมันเหมือนถูกบุกรุก ในแบบเดียวกับที่คุณจัดการ API key ที่รั่วไหล

เมื่อตั้ง repository และข้อมูลรับรองเรียบร้อยแล้ว ให้ require รุ่นที่ใบอนุญาตของคุณ ให้สิทธิ์

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

ตรึงเมเจอร์เวอร์ชันหากโปรเจกต์ของคุณนิยมข้อจำกัดที่ระบุชัดเจน — ตัวอย่างเช่น composer require nextpdf/pro:^3 ตรงกับข้อจำกัดที่หน้าโมดูล Pro ใช้

ตรวจสอบว่า Composer แก้ไขแพ็กเกจส่วนตัวได้และ autoloader ของมันทำงาน ก่อนอื่น ยืนยันว่าติดตั้งแพ็กเกจแล้วโดยรัน composer show <installed-package> สำหรับรุ่นใดก็ตามที่คุณ require — ตัวอย่างเช่น composer show nextpdf/pro, composer show nextpdf/enterprise หรือ 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

หาก composer show รายงานแพ็กเกจและเวอร์ชันของมัน แสดงว่าแก้ไขแพ็กเกจส่วนตัว สำเร็จ จากนั้นการรัน composer dump-autoload ซ้ำจะสร้าง autoloader ใหม่อย่างสะอาด เพื่อให้ค้นพบคลาสของแพ็กเกจได้

Terminal window
composer dump-autoload

ในฐานะการตรวจสอบระดับโค้ดที่เป็นทางเลือก คุณสามารถยืนยันว่าคลาสจากรุ่นที่ติดตั้ง ของคุณ autoload ได้ อย่า เดาชื่อคลาส ให้เปิด API reference สำหรับรุ่นที่คุณ ติดตั้ง แล้วเลือกคลาสสาธารณะใดก็ตามที่มีการบันทึกไว้ จากนั้นทดสอบว่ามันแก้ไขได้ คลาสที่จะมองหาขึ้นอยู่กับรุ่นของคุณ — คลาสที่มาพร้อมรุ่นหนึ่งอาจไม่มีในอีกรุ่นหนึ่ง และการที่คลาสเดียว autoload ได้พิสูจน์เพียงว่ารุ่น ของมัน มีอยู่ ไม่ใช่ว่าทุกรุ่น ติดตั้งอยู่

<?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));

การติดตั้งแพ็กเกจ ไม่ใช่ สิ่งเดียวกับการเปิดใช้งานมัน แพ็กเกจเพียงอย่างเดียว ไม่ได้มอบความสามารถ Pro หรือ Enterprise — ใบอนุญาตที่ลงนามแล้วที่คุณเปิดใช้งาน ต่างหากที่เลือกรุ่นที่ทำงานอยู่ หลังจากติดตั้งสำเร็จ ให้ทำตาม การออกใบอนุญาตและการเปิดใช้งาน เพื่อวางและเปิดใช้งาน ซองใบอนุญาต และสำหรับ build ที่เข้ารหัสด้วย ionCube ให้ตั้งค่า ionCube Loader

Composer เข้าถึง repository ได้ แต่ข้อมูลรับรองถูกปฏิเสธหรือไม่เพียงพอ ยืนยันว่า คีย์โฮสต์ ใน auth.json / COMPOSER_AUTH ตรงกับโฮสต์ของ repository พอดี (ไม่มี scheme ไม่มี path ไม่มีเครื่องหมาย slash ปิดท้าย) ว่า username และโทเคน เป็นปัจจุบัน และว่าโทเคนยังไม่หมดอายุหรือถูกหมุนเปลี่ยนในพอร์ทัลของคุณ 401 ชี้ไปที่ข้อมูลรับรองที่ผิดหรือขาดหายไป ส่วน 403 ชี้ไปที่ข้อมูลรับรอง ที่ถูกต้องแต่ ขอบเขต ของมันไม่ครอบคลุมแพ็กเกจหรือรุ่นที่คุณร้องขอ — ตรวจสอบว่าการสมัครสมาชิกของคุณให้สิทธิ์ชื่อแพ็กเกจที่คุณกำลัง require

โดยทั่วไปนี่หมายความว่า Composer ไม่ได้ใช้หรือไม่ได้เข้าถึงดัชนีส่วนตัว (จึงค้นหา เฉพาะใน Packagist สาธารณะ) หรือ มันเข้าถึงดัชนีแล้วแต่ไม่พบแพ็กเกจหรือเวอร์ชัน ที่ติดตั้งได้ซึ่งตรงกัน ยืนยันว่าบล็อก repositories.nextpdf มีอยู่ใน composer.json ของโปรเจกต์ นี้ พร้อม "type": "composer" และ URL ที่ถูกต้อง และว่าคุณกำลัง require ชื่อแพ็กเกจที่ตรงเป๊ะ (nextpdf/pro, nextpdf/enterprise หรือ nextpdf/premium) รัน composer config repositories เพื่อพิมพ์สิ่งที่ Composer เห็น การพิมพ์ URL ผิดหรือบล็อก repository ที่ขาดหายไป เป็นสาเหตุที่พบบ่อย แต่ก็ให้ตรวจสอบด้วยว่า ข้อจำกัดเวอร์ชัน ของคุณตรงกับ เวอร์ชันที่เผยแพร่แล้ว ว่า ข้อกำหนดแพลตฟอร์ม PHP ของโปรเจกต์ของคุณ (และ minimum-stability) อนุญาตแพ็กเกจนั้น และว่า สิทธิ์ของโทเคน ของคุณ ครอบคลุมแพ็กเกจที่คุณกำลัง require จริง

ไฟล์ auth.json ในเครื่องไม่มีอยู่บน runner ตั้งค่า COMPOSER_AUTH จากที่เก็บ ความลับ CI ของคุณ (Method B) แทนการพึ่งพาไฟล์ และตรวจสอบให้แน่ใจว่าตัวแปรถูก export ก่อน ที่ composer install จะรัน ใน build ที่ทำงานในคอนเทนเนอร์ ให้ส่งความลับ ณ เวลา build โดยไม่เก็บค้างลงในเลเยอร์ image

ข้อมูลรับรองจับคู่ตามโฮสต์ หาก URL ของ repository คือ https://repo.example.com/nextpdf คีย์ต้องเป็น repo.example.com — ไม่ใช่ URL เต็มและไม่ใช่ subpath คีย์ที่ไม่ตรงกันทำให้ Composer ส่งคำขอโดยไม่ยืนยันตัวตน ซึ่งปรากฏออกมาเป็น 401