ฉันชื่อ phpenv ฉันได้รับการออกแบบสำหรับมนุษย์ เพื่อช่วยให้การจัดการการติดตั้ง PHP แบบกำหนดเองหลายรายการง่ายขึ้น
เดิมทีฉันได้รับแรงบันดาลใจจากผลงานที่โดดเด่นของทั้งสองโปรเจ็กต์ที่คุณรู้จักและชื่นชอบอยู่แล้วด้วยการเพิ่ม PHP เป็นศูนย์กลางเพื่อช่วยคุณสร้างรีลีสแรก ลดความซับซ้อนในการจัดการและทำงานกับรีลีสที่แตกต่างกัน และให้คุณสร้างรีลีสใหม่หลังจากรีลีสใหม่ เหมือนไม่มีอะไรเลย
คุณเป็นนักพัฒนา PHP เช่นเดียวกับเรา และคุณไม่เพียงแต่ต้องมีล่ามล่าสุดและใหม่ล่าสุดเพื่อหมุนสคริปต์ของคุณ แต่คุณยังสนใจที่จะเห็นว่าพวกเขาได้รับการปฏิบัติอย่างไรเมื่อส่งไปยังการตีความแบบเก่า เคยสงสัยบ้างไหมว่าทำไมคุณไม่สามารถรันแอพ PHP บนเครื่องพัฒนาของคุณเองได้? คุณเพิ่งพบคำตอบเมื่อทำการสร้าง PHP บนเครื่อง dev ของพวกเขา ปรับแต่งตัวเลือกการกำหนดค่าของคุณได้อย่างง่ายดาย และสร้างส่วนขยาย pecl ใน PHP หรือด้วยตนเองหลังจากนั้น กำหนดค่าและติดตั้งบิลด์แบบกำหนดเองของเวอร์ชันรีลีส PHP เดียวกันได้โดยตรงจากแหล่งเก็บข้อมูลซอร์สโค้ด PHP ที่เก็บไว้ในโฟลเดอร์ .phpenv
ในเครื่องของคุณ
phpenv ดำเนินการบนไดเร็กทอรีต่อผู้ใช้ ~/.phpenv
ชื่อเวอร์ชันใน phpenv สอดคล้องกับไดเรกทอรีย่อยของ ~/.phpenv/versions
ตัวอย่างเช่น คุณอาจมี ~/.phpenv/versions/5.3.8
และ ~/.phpenv/versions/5.4.0
แต่ละเวอร์ชันเป็นแผนผังการทำงานที่มีไบนารีของตัวเอง เช่น ~/.phpenv/versions/5.4.0/bin/php
และ ~/.phpenv/versions/5.3.8/bin/pyrus
phpenv สร้าง ไบนารี shim ให้กับทุกไบนารีดังกล่าวใน PHP เวอร์ชันที่ติดตั้งทั้งหมด
ชิมเหล่านี้เป็นสคริปต์ wrapper ธรรมดาที่อยู่ใน ~/.phpenv/shims
และตรวจสอบว่าคุณต้องการใช้ PHP เวอร์ชันใด พวกเขาแทรกไดเร็กทอรีสำหรับเวอร์ชันที่เลือกไว้ที่จุดเริ่มต้นของ $PATH
ของคุณ จากนั้นจึงดำเนินการไบนารี่ที่เกี่ยวข้อง
เนื่องจากความเรียบง่ายของแนวทาง shim สิ่งที่คุณต้องใช้ phpenv คือ ~/.phpenv/shims
ใน $PATH
ของคุณ ซึ่งจะทำการเปลี่ยนเวอร์ชันโดยอัตโนมัติ
เพื่อให้การติดตั้งเป็นแบบอัตโนมัติมากขึ้น คุณสามารถใช้ phpenv-installer หากคุณต้องการวิธีการด้วยตนเอง ให้ทำตามขั้นตอนด้านล่าง
สิ่งนี้จะช่วยให้คุณเริ่มต้นใช้งาน phpenv เวอร์ชันล่าสุด และทำให้ง่ายต่อการแยกและสนับสนุนการเปลี่ยนแปลงใดๆ ย้อนหลัง
ตรวจสอบ phpenv ใน ~/.phpenv
$ git clone [email protected]:phpenv/phpenv.git ~/.phpenv
เพิ่ม ~/.phpenv/bin
ให้กับ $PATH
ของคุณเพื่อเข้าถึงยูทิลิตี้บรรทัดคำสั่ง phpenv
$ echo 'export PATH="$HOME/.phpenv/bin:$PATH"' >> ~/.bash_profile
เพิ่ม phpenv init ให้กับเชลล์ของคุณเพื่อเปิดใช้งาน shims และการเติมข้อความอัตโนมัติ
$ echo 'eval "$(phpenv init -)"' >> ~/.bash_profile
รีสตาร์ทเชลล์ของคุณเพื่อให้การเปลี่ยนแปลงเส้นทางมีผล ตอนนี้คุณสามารถเริ่มใช้ phpenv ได้แล้ว
$ exec $SHELL -l
(ไม่บังคับ) ติดตั้ง php-build ลงในนั้นและ php.ini ใด ๆ (ดูบ้าน php-build)
$ git clone https://github.com/php-build/php-build $(phpenv root)/plugins/php-build
$ phpenv install [any php version]
(ไม่บังคับ) สร้างไบนารีชิมใหม่ คุณควรทำเช่นนี้ทุกครั้งที่ติดตั้งไบนารี PHP ใหม่
$ phpenv rehash
หากคุณได้ติดตั้ง phpenv โดยใช้คำแนะนำข้างต้น คุณสามารถอัปเกรดการติดตั้งของคุณได้ตลอดเวลาโดยใช้ git
หากต้องการอัปเกรดเป็น phpenv เวอร์ชันพัฒนาล่าสุด ให้ใช้ git pull
:
$ cd ~/.phpenv
$ git pull
ตามค่าเริ่มต้น php-build จะรวบรวม PHP ด้วยชุดตัวเลือกเริ่มต้นที่ระบุโดย:
โดยทั่วไป หากคุณต้องการระบุวิธีการสร้าง PHP บนระบบของคุณ คุณสามารถเพิ่มตัวเลือกการกำหนดค่าในตัวแปร PHP_BUILD_CONFIGURE_OPTS
และเพิ่มส่วนขยาย PHP ในตัวแปร PHP_BUILD_INSTALL_EXTENSION
วิธีการเชื่อมต่อแอปพลิเคชัน phpenv ที่แนะนำคือการใช้ php-fpm หลังจากสร้าง php จากนั้นเว็บเซิร์ฟเวอร์ของคุณสามารถกำหนดค่าให้เชื่อมต่อกับอินสแตนซ์ php-fpm ได้ ในแนวทางนี้ php จะทำงานเป็นการอนุญาตของผู้ใช้ที่เรียกใช้ ซึ่งไม่จำเป็นต้องเป็นเว็บเซิร์ฟเวอร์
php-fpm สามารถเริ่มต้นได้ด้วยวิธีใดวิธีหนึ่งต่อไปนี้:
~/.phpenv/versions/$VERSION/etc/init.d/php-fpm
~/.phpenv/versions/$VERSION/etc/systemd/system/php-fpm.service
php-fpm (8)
และจัดหาอาร์กิวเมนต์บรรทัดคำสั่ง ตามค่าเริ่มต้น php-fpm จะมาพร้อมกับไฟล์การกำหนดค่าภายใต้ ~/.phpenv/versions/$VERSION/etc/php-fpm.conf
ซึ่งจะค้นหาเมื่อเรียกใช้ สิ่งนี้จะกำหนดค่า php-fpm ให้ฟังบน localhost:9000
เมื่อเริ่มต้น คุณสามารถแก้ไขหรือแทนที่ไฟล์นี้ หรือจัดหาไฟล์การกำหนดค่าอื่นโดยใช้อาร์กิวเมนต์บรรทัดคำสั่ง --fpm-config
( -y
)
คำแนะนำในการเชื่อมต่อเว็บเซิร์ฟเวอร์ต่างๆ กับ php-fpm:
หรือคุณสามารถใช้โมดูล Apache php ได้โดยกำหนดค่า php-build เพื่อสร้างส่วนขยาย apache libphp.so (ทำตามคำแนะนำ) libphp.so สามารถพบได้โดย apache ใต้โฟลเดอร์ ~/.phpenv/versions/$VERSION/libexec
ไฟล์นี้สามารถใช้สำหรับคำสั่ง LoadModule php5_module
ของ Apache และต้องการให้ Apache รีสตาร์ทเมื่อมีการเปลี่ยนแปลง
ข้ามส่วนนี้ เว้นแต่คุณจะต้องรู้ว่าทุกบรรทัดในโปรไฟล์เชลล์ของคุณกำลังทำอะไรอยู่
phpenv init
เป็นคำสั่งเดียวที่ข้ามบรรทัดของการโหลดคำสั่งพิเศษลงในเชลล์ของคุณ นี่คือสิ่งที่ phpenv init
ทำจริง:
กำหนดเส้นทางชิมของคุณ นี่เป็นข้อกำหนดเดียวเพื่อให้ phpenv ทำงานได้อย่างถูกต้อง คุณสามารถทำได้ด้วยมือโดยเติม ~/.phpenv/shims
$PATH
ให้กับคุณ
ติดตั้งการเติมข้อความอัตโนมัติ นี่เป็นทางเลือกทั้งหมด แต่มีประโยชน์ทีเดียว การจัดหา ~/.phpenv/completions/phpenv.bash
จะตั้งค่านั้น นอกจากนี้ยังมี ~/.phpenv/completions/phpenv.zsh
สำหรับผู้ใช้ Zsh
ปรับปรุงชิมส์ ในบางครั้ง คุณจะต้องสร้างไฟล์ shim ขึ้นมาใหม่ การทำเช่นนี้ใน init ช่วยให้แน่ใจว่าทุกอย่างเป็นข้อมูลล่าสุด คุณสามารถเรียกใช้ phpenv rehash
ด้วยตนเองได้ตลอดเวลา
ติดตั้งโปรแกรมเลือกจ่ายงาน sh บิตนี้ยังเป็นทางเลือก แต่อนุญาตให้ phpenv และปลั๊กอินเปลี่ยนตัวแปรในเชลล์ปัจจุบันของคุณ ทำให้สามารถใช้คำสั่งเช่น phpenv shell
ได้ sh Dispatcher ไม่ได้ทำอะไรบ้าๆ เช่น แทนที่ cd
หรือแฮ็กเชลล์พร้อมต์ของคุณ แต่หากคุณต้องการให้ phpenv
เป็นสคริปต์จริงแทนที่จะเป็นฟังก์ชันเชลล์ด้วยเหตุผลบางประการ คุณก็ข้ามมันไปได้อย่างปลอดภัย
เรียกใช้ phpenv init -
เพื่อตัวคุณเองเพื่อดูว่าเกิดอะไรขึ้นภายใต้ประทุน
เช่นเดียวกับ git
คำสั่ง phpenv
จะมอบหมายให้กับคำสั่งย่อยตามอาร์กิวเมนต์แรก คำสั่งย่อยที่พบบ่อยที่สุดคือ:
แสดงการใช้งานและความช่วยเหลือที่เป็นประโยชน์ เวลาเจอปัญหา ให้ทำสิ่งนี้ ;)
$ phpenv help
$ phpenv help <subcommand>
php-build เป็นปลั๊กอินที่เข้ากันได้กับ phpenv ที่สร้างและติดตั้ง php เพื่อให้สามารถใช้การติดตั้ง phpenv ได้ ให้ดาวน์โหลดและติดตั้งปลั๊กอิน php-build ตามที่อธิบายไว้ในขั้นตอนที่ 5 ของคำแนะนำการติดตั้งข้างต้น
ก่อนที่จะรันการติดตั้ง phpenv ตรวจสอบให้แน่ใจว่าได้ติดตั้งเวอร์ชันการพัฒนาที่จำเป็นในการสร้าง php ไว้ในระบบของคุณแล้ว โดยเฉพาะอย่างยิ่ง หากคุณต้องการสร้างส่วนขยาย apache ตรวจสอบให้แน่ใจว่าได้ติดตั้ง apache2-dev (หรือระบบปฏิบัติการที่เทียบเท่าของคุณ) แล้ว
ตั้งค่าเวอร์ชันสากลของ PHP ที่จะใช้ในเชลล์ทั้งหมดโดยการเขียนชื่อเวอร์ชันลงในไฟล์ ~/.phpenv/version
เวอร์ชันนี้สามารถแทนที่ได้ด้วยไฟล์ .phpenv-version
ต่อโปรเจ็กต์ หรือโดยการตั้งค่าตัวแปรสภาพแวดล้อม PHPENV_VERSION
$ phpenv global 5.4.0
system
ชื่อเวอร์ชันพิเศษบอกให้ phpenv ใช้ระบบ PHP (ตรวจพบโดยการค้นหาของคุณ $PATH
)
เมื่อทำงานโดยไม่มีหมายเลขเวอร์ชัน phpenv global
จะรายงานเวอร์ชันสากลที่กำหนดค่าไว้ในปัจจุบัน
ตั้งค่าเวอร์ชัน PHP ภายในเครื่องโดยการเขียนชื่อเวอร์ชันลงในไฟล์ .phpenv-version
ในไดเร็กทอรีปัจจุบัน เวอร์ชันนี้จะแทนที่เวอร์ชันสากล และสามารถแทนที่ตัวเองได้โดยการตั้งค่าตัวแปรสภาพแวดล้อม PHPENV_VERSION
หรือด้วยคำสั่ง phpenv shell
$ phpenv local 5.3.8
เมื่อทำงานโดยไม่มีหมายเลขเวอร์ชัน phpenv local
จะรายงานเวอร์ชันท้องถิ่นที่กำหนดค่าไว้ในปัจจุบัน คุณยังสามารถยกเลิกการตั้งค่าเวอร์ชันท้องถิ่นได้:
$ phpenv local --unset
ตั้งค่าเวอร์ชัน PHP เฉพาะเชลล์โดยการตั้งค่าตัวแปรสภาพแวดล้อม PHPENV_VERSION
ในเชลล์ของคุณ เวอร์ชันนี้จะแทนที่ทั้งเวอร์ชันเฉพาะโครงการและเวอร์ชันสากล
$ phpenv shell 5.3.9
เมื่อทำงานโดยไม่มีหมายเลขเวอร์ชัน phpenv shell
จะรายงานค่าปัจจุบันของ PHPENV_VERSION
คุณสามารถยกเลิกการตั้งค่าเวอร์ชันเชลล์ได้:
$ phpenv shell --unset
โปรดทราบว่าคุณจะต้องเปิดใช้งานการรวมเชลล์ของ phpenv (ขั้นตอนที่ 3 ของคำแนะนำในการติดตั้ง) เพื่อที่จะใช้คำสั่งนี้ หากคุณไม่ต้องการใช้การรวมเชลล์ คุณสามารถตั้งค่าตัวแปร PHPENV_VERSION
ด้วยตัวเองได้:
$ export PHPENV_VERSION=5.3.13
แสดงรายการเวอร์ชัน PHP ทั้งหมดที่ phpenv รู้จัก และแสดงเครื่องหมายดอกจันถัดจากเวอร์ชันที่ใช้งานอยู่ในปัจจุบัน
$ phpenv versions
5.2.8
5.3.13
* 5.4.0 (set by /YOUR-USERNAME/.phpenv/global)
แสดงเวอร์ชัน PHP ที่ใช้งานอยู่ในปัจจุบัน พร้อมด้วยข้อมูลเกี่ยวกับวิธีการตั้งค่า
$ phpenv version
5.4.0 (set by /YOUR-USERNAME/.phpenv/version)
ติดตั้ง shims สำหรับไบนารี PHP ทั้งหมดที่ phpenv รู้จัก (เช่น ~/.phpenv/versions/*/bin/*
) รันคำสั่งนี้หลังจากที่คุณติดตั้ง PHP เวอร์ชันใหม่
$ phpenv rehash
แสดงเส้นทางแบบเต็มไปยังไบนารี่ที่ phpenv จะดำเนินการเมื่อคุณรันคำสั่งที่กำหนด
$ phpenv which pyrus
/YOUR-USERNAME/.phpenv/versions/5.4.0/bin/pyrus
ซอร์สโค้ด phpenv โฮสต์บน GitHub มันสะอาด เป็นโมดูล และเข้าใจง่าย (ต้องขอบคุณโปรเจ็กต์ rbenv) แม้ว่าคุณจะไม่ใช่เชลล์แฮ็กเกอร์ก็ตาม
โดยพื้นฐานแล้วโปรเจ็กต์นี้เป็นโคลน (อ่าน: "ค้นหาและแทนที่") ของโปรเจ็กต์ rbenv มันต้องการความรักและการสนับสนุน หากคุณสนใจที่จะปรับปรุง โปรดอย่าลังเลที่จะแยก ส่งคำขอดึง และไฟล์ข้อบกพร่องในตัวติดตามปัญหา
(ใบอนุญาตเอ็มไอที)
ลิขสิทธิ์ (c) 2012 Dominic Giglio
ลิขสิทธิ์ (c) 2013 นิค ลอมบาร์ด
Copyright (c) 2015 madumlao
อนุญาตให้บุคคลใดก็ตามที่ได้รับสำเนาของซอฟต์แวร์นี้และไฟล์เอกสารที่เกี่ยวข้อง ("ซอฟต์แวร์") อนุญาตโดยไม่เสียค่าใช้จ่าย เพื่อจัดการกับซอฟต์แวร์โดยไม่มีข้อจำกัด รวมถึงแต่ไม่จำกัดเพียงสิทธิ์ในการใช้ คัดลอก ปรับเปลี่ยน ผสาน เผยแพร่ แจกจ่าย ให้อนุญาตช่วง และ/หรือขายสำเนาของซอฟต์แวร์ และอนุญาตให้บุคคลที่ได้รับซอฟต์แวร์นี้สามารถทำได้ ภายใต้เงื่อนไขต่อไปนี้:
ประกาศเกี่ยวกับลิขสิทธิ์ข้างต้นและประกาศการอนุญาตนี้จะรวมอยู่ในสำเนาทั้งหมดหรือส่วนสำคัญของซอฟต์แวร์
ซอฟต์แวร์นี้มีให้ "ตามที่เป็น" โดยไม่มีการรับประกันใดๆ ทั้งโดยชัดแจ้งหรือโดยนัย ซึ่งรวมถึงแต่ไม่จำกัดเพียงการรับประกันความสามารถในการค้าขาย ความเหมาะสมสำหรับวัตถุประสงค์เฉพาะ และการไม่ละเมิด ไม่ว่าในกรณีใดผู้เขียนหรือผู้ถือลิขสิทธิ์จะต้องรับผิดต่อการเรียกร้องค่าเสียหายหรือความรับผิดอื่นใดไม่ว่าในการกระทำของสัญญาการละเมิดหรืออย่างอื่นที่เกิดขึ้นจากหรือเกี่ยวข้องกับซอฟต์แวร์หรือการใช้งานหรือข้อตกลงอื่น ๆ ใน ซอฟต์แวร์.