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 ของเราหรือโดยการเริ่ม การประเมิน — จาก พอร์ทัลใบอนุญาต สำหรับเส้นทางการซื้อ โมเดลสองสัญญา (การซื้อเทียบกับใบอนุญาต) และผู้ที่ควรติดต่อ ในเรื่องการเรียกเก็บเงินเทียบกับความช่วยเหลือด้านผลิตภัณฑ์ โปรดดู การซื้อและการให้สิทธิ์การใช้งาน
1. แพ็กเกจ premium อยู่ที่ไหน
หัวข้อที่มีชื่อว่า “1. แพ็กเกจ premium อยู่ที่ไหน”พอร์ทัลใบอนุญาตของคุณออกสองสิ่งสำหรับการติดตั้ง
- URL ของ repository ส่วนตัวของ Composer — endpoint ที่ต้องยืนยันตัวตนซึ่งให้บริการ แพ็กเกจ premium
- username และโทเคน (คู่ข้อมูลรับรองแบบ HTTP Basic) สำหรับ endpoint นั้น
ที่ใดก็ตามที่หน้านี้แสดงโฮสต์ของ repository ให้แทนที่ด้วย URL ของ repository จากพอร์ทัลใบอนุญาตของคุณ ที่ใดก็ตามที่แสดง username หรือโทเคน ให้แทนที่ด้วย ข้อมูลรับรองที่ออกให้บัญชีของคุณ NextPDF ไม่ได้เผยแพร่ URL ที่ใช้ร่วมกันเพียงตัวเดียว endpoint และข้อมูลรับรองเป็นของเฉพาะสำหรับการสมัครสมาชิกของคุณ
2. เพิ่ม repository ส่วนตัวลงใน composer.json
หัวข้อที่มีชื่อว่า “2. เพิ่ม repository ส่วนตัวลงใน composer.json”บอก Composer ให้รู้จัก repository ด้วยคำสั่งเดียว รันที่รากของโปรเจกต์ของคุณ
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 ข้อมูลรับรองในขั้นตอนถัดไปต่างหากที่คุณต้องปกป้อง
3. ยืนยันตัวตนด้วยวิธีมาตรฐานหนึ่งในสามแบบ
หัวข้อที่มีชื่อว่า “3. ยืนยันตัวตนด้วยวิธีมาตรฐานหนึ่งในสามแบบ”Composer อ่านข้อมูลรับรอง HTTP Basic สำหรับโฮสต์จากหลายแห่ง เลือกวิธีที่ตรงกับ สถานที่ที่คุณกำลังติดตั้ง
Method A — auth.json (การพัฒนาในเครื่อง)
หัวข้อที่มีชื่อว่า “Method A — auth.json (การพัฒนาในเครื่อง)”สำหรับเครื่องของนักพัฒนา ให้เก็บข้อมูลรับรองไว้ในไฟล์ auth.json ข้างๆ
composer.json ใช้ โฮสต์ ของ URL repository ของคุณเป็นคีย์
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 จับคู่ข้อมูลรับรองกับคำขอตามโฮสต์
Method B — ตัวแปรสภาพแวดล้อม COMPOSER_AUTH (CI/CD)
หัวข้อที่มีชื่อว่า “Method B — ตัวแปรสภาพแวดล้อม COMPOSER_AUTH (CI/CD)”ในระบบ continuous integration โดยปกติคุณไม่ต้องการไฟล์บนดิสก์ Composer อ่าน
ข้อมูลรับรองเดียวกันจากตัวแปรสภาพแวดล้อม COMPOSER_AUTH ซึ่งค่าของมันคือสตริง
JSON ที่มีรูปร่างเดียวกับ auth.json
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
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 เมื่อข้อมูลรับรองควรจำกัดขอบเขตอยู่ที่โปรเจกต์หรือไปป์ไลน์เดียว
4. เก็บข้อมูลรับรองให้พ้นจาก version control
หัวข้อที่มีชื่อว่า “4. เก็บข้อมูลรับรองให้พ้นจาก version control”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 ที่รั่วไหล
5. ติดตั้งและตรวจสอบ
หัวข้อที่มีชื่อว่า “5. ติดตั้งและตรวจสอบ”เมื่อตั้ง repository และข้อมูลรับรองเรียบร้อยแล้ว ให้ require รุ่นที่ใบอนุญาตของคุณ ให้สิทธิ์
# 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/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
# Use the package name you actually required:composer show nextpdf/pro# orcomposer show nextpdf/enterprise# orcomposer show nextpdf/premiumหาก composer show รายงานแพ็กเกจและเวอร์ชันของมัน แสดงว่าแก้ไขแพ็กเกจส่วนตัว
สำเร็จ จากนั้นการรัน composer dump-autoload ซ้ำจะสร้าง autoloader ใหม่อย่างสะอาด
เพื่อให้ค้นพบคลาสของแพ็กเกจได้
composer dump-autoloadในฐานะการตรวจสอบระดับโค้ดที่เป็นทางเลือก คุณสามารถยืนยันว่าคลาสจากรุ่นที่ติดตั้ง ของคุณ autoload ได้ อย่า เดาชื่อคลาส ให้เปิด API reference สำหรับรุ่นที่คุณ ติดตั้ง แล้วเลือกคลาสสาธารณะใดก็ตามที่มีการบันทึกไว้ จากนั้นทดสอบว่ามันแก้ไขได้ คลาสที่จะมองหาขึ้นอยู่กับรุ่นของคุณ — คลาสที่มาพร้อมรุ่นหนึ่งอาจไม่มีในอีกรุ่นหนึ่ง และการที่คลาสเดียว autoload ได้พิสูจน์เพียงว่ารุ่น ของมัน มีอยู่ ไม่ใช่ว่าทุกรุ่น ติดตั้งอยู่
<?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));การติดตั้งแพ็กเกจ ไม่ใช่ สิ่งเดียวกับการเปิดใช้งานมัน แพ็กเกจเพียงอย่างเดียว ไม่ได้มอบความสามารถ Pro หรือ Enterprise — ใบอนุญาตที่ลงนามแล้วที่คุณเปิดใช้งาน ต่างหากที่เลือกรุ่นที่ทำงานอยู่ หลังจากติดตั้งสำเร็จ ให้ทำตาม การออกใบอนุญาตและการเปิดใช้งาน เพื่อวางและเปิดใช้งาน ซองใบอนุญาต และสำหรับ build ที่เข้ารหัสด้วย ionCube ให้ตั้งค่า ionCube Loader
การแก้ไขปัญหา
หัวข้อที่มีชื่อว่า “การแก้ไขปัญหา”401 Unauthorized หรือ 403 Forbidden
หัวข้อที่มีชื่อว่า “401 Unauthorized หรือ 403 Forbidden”Composer เข้าถึง repository ได้ แต่ข้อมูลรับรองถูกปฏิเสธหรือไม่เพียงพอ ยืนยันว่า
คีย์โฮสต์ ใน auth.json / COMPOSER_AUTH ตรงกับโฮสต์ของ repository พอดี
(ไม่มี scheme ไม่มี path ไม่มีเครื่องหมาย slash ปิดท้าย) ว่า username และโทเคน
เป็นปัจจุบัน และว่าโทเคนยังไม่หมดอายุหรือถูกหมุนเปลี่ยนในพอร์ทัลของคุณ
401 ชี้ไปที่ข้อมูลรับรองที่ผิดหรือขาดหายไป ส่วน 403 ชี้ไปที่ข้อมูลรับรอง
ที่ถูกต้องแต่ ขอบเขต ของมันไม่ครอบคลุมแพ็กเกจหรือรุ่นที่คุณร้องขอ —
ตรวจสอบว่าการสมัครสมาชิกของคุณให้สิทธิ์ชื่อแพ็กเกจที่คุณกำลัง require
ไม่พบแพ็กเกจ / “could not find a matching version”
หัวข้อที่มีชื่อว่า “ไม่พบแพ็กเกจ / “could not find a matching version””โดยทั่วไปนี่หมายความว่า 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 จริง
โทเคนทำงานในเครื่องแต่ล้มเหลวใน CI
หัวข้อที่มีชื่อว่า “โทเคนทำงานในเครื่องแต่ล้มเหลวใน CI”ไฟล์ 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