Nama saya phpenv. Saya dirancang untuk manusia, untuk membantu menyederhanakan pengelolaan beberapa instalasi build kustom PHP.
Saya awalnya terinspirasi oleh karya luar biasa dari kedua proyek yang sudah Anda kenal dan sukai dengan sejumlah tambahan PHP sentris untuk membantu Anda membangun rilis pertama Anda, menyederhanakan pengelolaan dan bekerja dengan rilis yang berbeda dan membuat Anda terus membuat rilis baru setelah rilis baru seperti tidak ada apa-apanya.
Anda adalah seorang pengembang PHP, seperti kami, dan Anda tidak hanya harus memiliki juru bahasa terbaru dan terbaru untuk memutar skrip Anda, tetapi Anda juga ingin melihat bagaimana skrip tersebut diperlakukan ketika diserahkan ke interpretasi yang lebih lama. Pernah bertanya-tanya mengapa Anda tidak bisa menjalankan aplikasi PHP di mesin pengembangan Anda sendiri? Anda baru saja menemukan jawabannya saat melakukan perjalanan membangun PHP di mesin pengembang mereka. Sesuaikan opsi konfigurasi Anda dengan mudah dan bahkan buat ekstensi pecl ke dalam PHP atau secara manual setelahnya. Konfigurasikan dan instal build khusus dari versi rilis PHP yang sama langsung dari repositori kode sumber PHP yang disimpan di folder .phpenv
lokal Anda.
phpenv beroperasi pada direktori per pengguna ~/.phpenv
. Nama versi di phpenv sesuai dengan subdirektori ~/.phpenv/versions
. Misalnya, Anda mungkin memiliki ~/.phpenv/versions/5.3.8
dan ~/.phpenv/versions/5.4.0
.
Setiap versi adalah pohon yang berfungsi dengan binernya sendiri, seperti ~/.phpenv/versions/5.4.0/bin/php
dan ~/.phpenv/versions/5.3.8/bin/pyrus
. phpenv membuat binari shim untuk setiap biner tersebut di semua versi PHP yang terinstal.
Shim ini adalah skrip pembungkus sederhana yang ada di ~/.phpenv/shims
dan mendeteksi versi PHP mana yang ingin Anda gunakan. Mereka memasukkan direktori untuk versi yang dipilih di awal $PATH
Anda dan kemudian mengeksekusi biner yang sesuai.
Karena kesederhanaan pendekatan shim, yang Anda perlukan untuk menggunakan phpenv adalah ~/.phpenv/shims
di $PATH
Anda yang akan melakukan peralihan versi secara otomatis.
Untuk instalasi yang lebih otomatis, Anda dapat menggunakan phpenv-installer. Jika Anda lebih suka pendekatan manual, ikuti langkah-langkah di bawah ini.
Ini akan membantu Anda menggunakan versi terbaru phpenv dan memudahkan Anda melakukan fork dan menyumbangkan perubahan apa pun kembali ke hulu.
Periksa phpenv ke ~/.phpenv
.
$ git clone [email protected]:phpenv/phpenv.git ~/.phpenv
Tambahkan ~/.phpenv/bin
ke $PATH
Anda untuk akses ke utilitas baris perintah phpenv
.
$ echo 'export PATH="$HOME/.phpenv/bin:$PATH"' >> ~/.bash_profile
Tambahkan phpenv init ke shell Anda untuk mengaktifkan shim dan pelengkapan otomatis.
$ echo 'eval "$(phpenv init -)"' >> ~/.bash_profile
Mulai ulang shell Anda agar perubahan jalur diterapkan. Anda sekarang dapat mulai menggunakan phpenv.
$ exec $SHELL -l
(Opsional) Instal php-build ke dalamnya dan php.ini apa pun. (Lihat php-build rumah)
$ git clone https://github.com/php-build/php-build $(phpenv root)/plugins/php-build
$ phpenv install [any php version]
(Opsional) Bangun kembali biner shim. Anda harus melakukan ini setiap kali Anda menginstal biner PHP baru.
$ phpenv rehash
Jika Anda telah menginstal phpenv menggunakan petunjuk di atas, Anda dapat mengupgrade instalasi Anda kapan saja menggunakan git.
Untuk meningkatkan ke versi pengembangan terbaru phpenv, gunakan git pull
:
$ cd ~/.phpenv
$ git pull
Secara default, php-build akan mengkompilasi PHP dengan serangkaian opsi default yang ditentukan oleh:
Biasanya, jika Anda perlu menentukan bagaimana PHP dibangun di sistem Anda, Anda dapat menambahkan opsi konfigurasi di variabel PHP_BUILD_CONFIGURE_OPTS
, dan menambahkan ekstensi PHP di variabel PHP_BUILD_INSTALL_EXTENSION
.
Cara yang lebih disukai untuk menghubungkan aplikasi phpenv adalah dengan menggunakan php-fpm setelah membangun php. Server web Anda kemudian dapat dikonfigurasi untuk terhubung ke instance php-fpm. Dalam pendekatan ini, php akan dijalankan sebagai izin dari pengguna yang meminta, yang belum tentu sebagai server web.
php-fpm dapat dimulai dengan salah satu cara berikut:
~/.phpenv/versions/$VERSION/etc/init.d/php-fpm
~/.phpenv/versions/$VERSION/etc/systemd/system/php-fpm.service
php-fpm (8)
dan memberikan argumen baris perintah Secara default, php-fpm dilengkapi dengan file konfigurasi di bawah ~/.phpenv/versions/$VERSION/etc/php-fpm.conf
, yang akan dicari ketika dijalankan. Ini mengkonfigurasi php-fpm untuk mendengarkan di localhost:9000
ketika dimulai. Anda dapat mengedit atau mengganti file ini, atau menyediakan file konfigurasi lain menggunakan argumen baris perintah --fpm-config
( -y
).
Petunjuk untuk menghubungkan server web yang berbeda ke php-fpm:
Alternatifnya, Anda masih dapat menggunakan modul Apache php dengan mengkonfigurasi php-build untuk membangun ekstensi Apache libphp.so (petunjuk diikuti). libphp.so kemudian dapat ditemukan oleh Apache di bawah folder ~/.phpenv/versions/$VERSION/libexec
. File ini dapat digunakan untuk direktif LoadModule php5_module
Apache dan mengharuskan Apache untuk memulai ulang ketika diubah.
Lewati bagian ini kecuali Anda harus mengetahui apa yang dilakukan setiap baris di profil shell Anda.
phpenv init
adalah satu-satunya perintah yang melewati batas memuat perintah tambahan ke dalam shell Anda. Inilah yang sebenarnya dilakukan phpenv init
:
Atur jalur shim Anda. Ini adalah satu-satunya persyaratan agar phpenv dapat berfungsi dengan baik. Anda juga dapat melakukan ini secara manual dengan menambahkan ~/.phpenv/shims
ke $PATH
Anda.
Menginstal pelengkapan otomatis. Ini sepenuhnya opsional tetapi cukup berguna. Sumber ~/.phpenv/completions/phpenv.bash
akan mengaturnya. Ada juga ~/.phpenv/completions/phpenv.zsh
untuk pengguna Zsh.
Mengulangi shim. Dari waktu ke waktu Anda perlu membangun kembali file shim Anda. Melakukan ini di init memastikan semuanya mutakhir. Anda selalu dapat menjalankan phpenv rehash
secara manual.
Menginstal operator sh. Bit ini juga opsional, tetapi memungkinkan phpenv dan plugin untuk mengubah variabel di shell Anda saat ini, sehingga memungkinkan perintah seperti phpenv shell
. Operator sh tidak melakukan hal gila seperti menimpa cd
atau meretas prompt shell Anda, tetapi jika karena alasan tertentu Anda memerlukan phpenv
sebagai skrip asli dan bukan fungsi shell, Anda dapat melewatinya dengan aman.
Jalankan phpenv init -
agar Anda dapat melihat sendiri apa yang sebenarnya terjadi.
Seperti git
, perintah phpenv
didelegasikan ke sub-perintah berdasarkan argumen pertamanya. Sub-perintah yang paling umum adalah:
Tunjukkan penggunaan dan bantuan yang berguna. Ketika Anda dalam kesulitan, lakukan ini;)
$ phpenv help
$ phpenv help <subcommand>
php-build adalah plugin yang kompatibel dengan phpenv yang membangun dan menginstal php. Untuk dapat menggunakan instalasi phpenv, unduh dan instal plugin php-build seperti yang dijelaskan pada langkah 5 dari instruksi instalasi di atas.
Sebelum menjalankan phpenv install, pastikan versi pengembangan yang diperlukan untuk membangun php telah diinstal di sistem Anda. Khususnya, jika Anda ingin membuat ekstensi apache, pastikan apache2-dev (atau OS Anda yang setara) sudah diinstal.
Menyetel versi global PHP untuk digunakan di semua shell dengan menulis nama versi ke file ~/.phpenv/version
. Versi ini dapat diganti dengan file .phpenv-version
per proyek, atau dengan mengatur variabel lingkungan PHPENV_VERSION
.
$ phpenv global 5.4.0
system
nama versi khusus memberitahu phpenv untuk menggunakan sistem PHP (terdeteksi dengan mencari $PATH
Anda).
Ketika dijalankan tanpa nomor versi, phpenv global
melaporkan versi global yang saat ini dikonfigurasi.
Menetapkan versi PHP lokal per proyek dengan menulis nama versi ke file .phpenv-version
di direktori saat ini. Versi ini mengesampingkan versi global, dan dapat diganti sendiri dengan mengatur variabel lingkungan PHPENV_VERSION
atau dengan perintah phpenv shell
.
$ phpenv local 5.3.8
Ketika dijalankan tanpa nomor versi, phpenv local
melaporkan versi lokal yang dikonfigurasi saat ini. Anda juga dapat menghapus versi lokal:
$ phpenv local --unset
Tetapkan versi PHP khusus shell dengan mengatur variabel lingkungan PHPENV_VERSION
di shell Anda. Versi ini menggantikan versi khusus proyek dan versi global.
$ phpenv shell 5.3.9
Saat dijalankan tanpa nomor versi, phpenv shell
melaporkan nilai PHPENV_VERSION
saat ini. Anda juga dapat menghapus versi shell:
$ phpenv shell --unset
Perhatikan bahwa Anda perlu mengaktifkan integrasi shell phpenv (langkah 3 dari petunjuk instalasi) untuk menggunakan perintah ini. Jika Anda memilih untuk tidak menggunakan integrasi shell, Anda cukup mengatur sendiri variabel PHPENV_VERSION
:
$ export PHPENV_VERSION=5.3.13
Mencantumkan semua versi PHP yang diketahui phpenv, dan menampilkan tanda bintang di sebelah versi yang sedang aktif.
$ phpenv versions
5.2.8
5.3.13
* 5.4.0 (set by /YOUR-USERNAME/.phpenv/global)
Menampilkan versi PHP yang sedang aktif, beserta informasi cara pengaturannya.
$ phpenv version
5.4.0 (set by /YOUR-USERNAME/.phpenv/version)
Menginstal shims untuk semua biner PHP yang diketahui phpenv (yaitu, ~/.phpenv/versions/*/bin/*
). Jalankan perintah ini setelah Anda menginstal versi baru PHP.
$ phpenv rehash
Menampilkan jalur lengkap ke biner yang akan dijalankan phpenv saat Anda menjalankan perintah yang diberikan.
$ phpenv which pyrus
/YOUR-USERNAME/.phpenv/versions/5.4.0/bin/pyrus
Kode sumber phpenv dihosting di GitHub. Ini bersih, modular, dan mudah dimengerti (berkat proyek rbenv), bahkan jika Anda bukan seorang hacker shell.
Proyek ini pada dasarnya adalah tiruan (Baca: "cari dan ganti") dari proyek rbenv. Itu membutuhkan cinta dan dukungan. Jika Anda tertarik untuk memperbaikinya, silakan melakukan fork, mengirimkan permintaan penarikan, dan melaporkan bug pada pelacak masalah.
(Lisensi MIT)
Hak Cipta (c) 2012 Dominic Giglio
Hak Cipta (c) 2013 Nick Lombard
Hak Cipta (c) 2015 madumlao
Izin dengan ini diberikan, secara gratis, kepada siapa pun yang memperoleh salinan perangkat lunak ini dan file dokumentasi terkait ("Perangkat Lunak"), untuk menggunakan Perangkat Lunak tanpa batasan, termasuk tanpa batasan hak untuk menggunakan, menyalin, memodifikasi, menggabungkan , mempublikasikan, mendistribusikan, mensublisensikan, dan/atau menjual salinan Perangkat Lunak, dan mengizinkan orang yang menerima Perangkat Lunak untuk melakukan hal tersebut, dengan tunduk pada ketentuan berikut:
Pemberitahuan hak cipta di atas dan pemberitahuan izin ini akan disertakan dalam semua salinan atau sebagian besar Perangkat Lunak.
PERANGKAT LUNAK INI DISEDIAKAN "APA ADANYA", TANPA JAMINAN APA PUN, TERSURAT MAUPUN TERSIRAT, TERMASUK NAMUN TIDAK TERBATAS PADA JAMINAN KELAYAKAN UNTUK DIPERDAGANGKAN, KESESUAIAN UNTUK TUJUAN TERTENTU, DAN TIDAK ADA PELANGGARAN. DALAM KEADAAN APA PUN PENULIS ATAU PEMEGANG HAK CIPTA TIDAK BERTANGGUNG JAWAB ATAS KLAIM, KERUSAKAN, ATAU TANGGUNG JAWAB LAINNYA, BAIK DALAM TINDAKAN KONTRAK, HUKUM ATAU LAINNYA, YANG TIMBUL DARI, ATAU SEHUBUNGAN DENGAN PERANGKAT LUNAK ATAU PENGGUNAAN ATAU HAL-HAL LAIN DALAM PERANGKAT LUNAK.