Rumah >pembangunan bahagian belakang >tutorial php >Cara menjalankan pelbagai versi PHP pada satu pelayan
Takeaways Key
Memasang nginx
Kemudian, kami membuat pautan permulaan sistem untuk nginx dan mulakannya
sudo yum install nginx
Membina php
sudo chkconfig nginx on sudo service nginx start
GCC atau beberapa suite compiler lain.
maka kita perlu mendapatkan kod sumbernya. Terdapat dua cara untuk melakukan ini: anda boleh memuat turun arkib dari halaman muat turun PHP atau mengklonkan repositori git dari GitHub.
sudo yum install gcc libxml2-devel libXpm-devel gmp-devel libicu-devel t1lib-devel aspell-devel openssl-devel bzip2-devel libcurl-devel libjpeg-devel libvpx-devel libpng-devel freetype-devel readline-devel libtidy-devel libxslt-devel libmcrypt-devel pcre-devel curl-devel mysql-devel ncurses-devel gettext-devel net-snmp-devel libevent-devel libtool-ltdl-devel libc-client-devel postgresql-devel bison gcc make
Kami mengesyorkan menyemak kod sumber dari Git, kerana ia memberikan anda cara mudah untuk memastikan pemasangan anda terkini dan untuk mencuba kod anda dengan versi yang berbeza. Pemeriksaan Git juga diperlukan jika anda ingin mengemukakan patch atau permintaan untuk php.
untuk mengklon repositori, jalankan arahan berikut di terminal anda:
sudo yum install nginx
Secara lalai anda akan berada di cawangan induk, jadi jika anda ingin berpindah ke versi pembangunan, anda perlu menyemak cawangan yang stabil. Contohnya.
sudo chkconfig nginx on sudo service nginx start
Sebelum pergi ke langkah membina individu, kita mesti melaksanakan beberapa arahan untuk membina php "lalai". Ini hanya perlu dibina dari git.
sudo yum install gcc libxml2-devel libXpm-devel gmp-devel libicu-devel t1lib-devel aspell-devel openssl-devel bzip2-devel libcurl-devel libjpeg-devel libvpx-devel libpng-devel freetype-devel readline-devel libtidy-devel libxslt-devel libmcrypt-devel pcre-devel curl-devel mysql-devel ncurses-devel gettext-devel net-snmp-devel libevent-devel libtool-ltdl-devel libc-client-devel postgresql-devel bison gcc make
./ BuildConf menjana skrip konfigurasi. Ini mungkin mengambil masa beberapa minit.
pada pendapat saya, menyimpan keseluruhan pelayan web dalam satu direktori adalah yang terbaik, jadi saya gunakan /memilih di sini. Buka terminal dan taipkan arahan berikut.
sudo mkdir /opt/source && cd /opt/source git clone git@github.com:php/php-src.git && cd php-src
Setelah skrip ./Configure dihasilkan melalui langkah di atas, anda boleh menggunakannya untuk menyesuaikan binaan PHP anda. Anda boleh menyenaraikan semua pilihan yang disokong menggunakan -help:
<span> PHP 5.3: git checkout PHP-5.3 </span><span> PHP 5.4: git checkout PHP-5.4 </span><span> PHP 5.6: git checkout PHP-5.6 </span><span> PHP HEAD: git checkout master </span>
Perintah di atas akan menyenaraikan pelbagai pilihan generik, yang disokong oleh semua skrip konfigurasi berasaskan Autoconf. Salah satu daripada mereka telah disebutkan -prefix = dir, yang mengubah direktori pemasangan yang digunakan dengan membuat pemasangan. Satu lagi pilihan berguna ialah -c, yang akan cache hasil dari pelbagai ujian dalam fail config.cache dan mempercepatkan panggilan berikutnya ./configure. Menggunakan pilihan ini hanya masuk akal sebaik sahaja anda sudah membina kerja dan ingin dengan cepat berubah antara konfigurasi yang berbeza.
Berikut adalah beberapa tetapan yang berguna:
sudo ./buildconf
Selepas menamatkan persiapan, kami memasang versi PHP 5.6. Jalankan yang berikut:
sudo mkdir -p /opt/php-5.6 sudo mkdir -p /opt/php-5.5suis terakhir (-enable-fpm) menjadikan versi PHP ini berfungsi dengan PHP-FPM. Jika anda ingin menggunakan versi PHP-FPM ini dengan Apache, sila gunakan-With-FPM-USER = Apache dan-With-FPM-group = Apache. Sebaliknya, jika anda ingin menggunakan versi php-fpm ini dengan nginx, sila gunakan-with-fpm-user = nginx dan --with-fpm-group = nginx.
Mesej yang berjaya harus dicetak di terminal seperti:
3
./configure --help
Hasil utama operasi ini akan menjadi binari PHP untuk SAPI yang didayakan (secara lalai SAPI/CLI/PHP dan SAPI/CGI/PHP-CGI), serta sambungan bersama dalam modul/direktori.
Sekarang anda boleh menjalankan "Buat Pasang" untuk memasang PHP ke /usr /tempatan (lalai) atau direktori lain dengan menggunakan konfigurasi --Prefix. Dalam kes ini ia /opt/php-5.6[...] Usage: ./configure [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print `checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for `--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or `..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [/usr/local] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, `make install' will install all the files in `/usr/local/bin', `/usr/local/lib' etc. You can specify an installation prefix other than `/usr/local' using `--prefix', for instance `--prefix=$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/PACKAGE] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] [...]
Sila ambil perhatian bahawa membuat pemasangan tidak akan membuat fail INI.
./configure \ --prefix=/opt/php-5.6 \ --with-pdo-pgsql \ --with-zlib-dir \ --with-freetype-dir \ --enable-mbstring \ --with-libxml-dir=/usr \ --enable-soap \ --enable-calendar \ --with-curl \ --with-mcrypt \ --with-zlib \ --with-gd \ --with-pgsql \ --disable-rpath \ --enable-inline-optimization \ --with-bz2 \ --with-zlib \ --enable-sockets \ --enable-sysvsem \ --enable-sysvshm \ --enable-pcntl \ --enable-mbregex \ --with-mhash \ --enable-zip \ --with-pcre-regex \ --with-mysql \ --with-pdo-mysql \ --with-mysqli \ --with-png-dir=/usr \ --enable-gd-native-ttf \ --with-openssl \ --with-fpm-user=nginx \ --with-fpm-group=nginx \ --with-libdir=lib64 \ --enable-ftp \ --with-imap \ --with-imap-ssl \ --with-kerberos \ --with-gettext \ --with-gd \ --with-jpeg-dir=/usr/lib/ --enable-fpmsalin php.ini dan php-fpm.conf ke direktori yang betul:
[...] creating libtool appending configuration tag "CXX" to libtool Generating files configure: creating ./config.status creating main/internal_functions.c creating main/internal_functions_cli.c +--------------------------------------------------------------------+ | License: | | This software is subject to the PHP License, available in this | | distribution in the file LICENSE. By continuing this installation | | process, you are bound by the terms of this license agreement. | | If you do not agree with the terms of this license, you must abort | | the installation process at this point. | +--------------------------------------------------------------------+ Thank you for using PHP. config.status: creating php5.spec config.status: creating main/build-defs.h config.status: creating scripts/phpize config.status: creating scripts/man1/phpize.1 config.status: creating scripts/php-config config.status: creating scripts/man1/php-config.1 config.status: creating sapi/cli/php.1 config.status: creating sapi/fpm/php-fpm.conf config.status: creating sapi/fpm/init.d.php-fpm config.status: creating sapi/fpm/php-fpm.service config.status: creating sapi/fpm/php-fpm.8 config.status: creating sapi/fpm/status.html config.status: creating sapi/cgi/php-cgi.1 config.status: creating ext/phar/phar.1 config.status: creating ext/phar/phar.phar.1 config.status: creating main/php_config.h config.status: executing default commandskami mengesahkan dan menyemak versi PHP sekali lagi.
sudo yum install nginx
buka /opt/php-5.6/etc/php-fpm.conf dan laraskan tetapan dalam barisan pendengaran. Anda mesti menukar ke pelabuhan yang tidak digunakan (mis. 9001; port 9000 mungkin digunakan oleh fedora)
sudo chkconfig nginx on sudo service nginx start
sudo yum install gcc libxml2-devel libXpm-devel gmp-devel libicu-devel t1lib-devel aspell-devel openssl-devel bzip2-devel libcurl-devel libjpeg-devel libvpx-devel libpng-devel freetype-devel readline-devel libtidy-devel libxslt-devel libmcrypt-devel pcre-devel curl-devel mysql-devel ncurses-devel gettext-devel net-snmp-devel libevent-devel libtool-ltdl-devel libc-client-devel postgresql-devel bison gcc make
Anda mungkin mahu membuat skrip init untuk PHP-FPM baru anda. Nasib baik, Php 5.3 sudah menyediakannya untuk anda, hanya salin skrip init ke direktori anda dan menukar keizinan:
sudo mkdir /opt/source && cd /opt/source git clone git@github.com:php/php-src.git && cd php-src
skrip init anda sudah siap. Sekarang, anda dapat memulakan, menghentikan dan memuatkan semula PHP-FPM:
<span> PHP 5.3: git checkout PHP-5.3 </span><span> PHP 5.4: git checkout PHP-5.4 </span><span> PHP 5.6: git checkout PHP-5.6 </span><span> PHP HEAD: git checkout master </span>
Kami membuka terminal dan ketik arahan berikut.
sudo ./buildconf
Untuk memasang pelbagai versi Phalcon termasuk Phalcon 2.0, kita perlu memasang Zephir
sudo mkdir -p /opt/php-5.6 sudo mkdir -p /opt/php-5.5
Terdapat banyak cara untuk memasang sambungan PHP. Kami akan menggunakan phpize membinanya.
PHPIZE memainkan peranan yang sama seperti skrip. Antara fail ini ialah acinclude.m4 (PHP's M4 macro), phpize.m4 (yang akan dinamakan semula untuk mengkonfigurasi.in dalam lanjutan anda dan mengandungi arahan pembina utama) dan run-tests.php.
Kemudian, phpize akan memanggil autoconf untuk menghasilkan fail ./configure, yang boleh digunakan untuk menyesuaikan binaan lanjutan. Seperti pemasangan memcached anda mesti menambah-yang boleh dimulakan.
ingat! Anda mesti menentukan pilihan-With-PHP-CONFIG semasa membina sambungan (melainkan jika anda hanya mempunyai satu pemasangan Global PHP). Jika tidak ./Configure tidak akan dapat menentukan versi PHP dan bendera dengan betul. Selain itu, skrip php-config juga memastikan bahawa perintah "membuat pemasangan" akan memindahkan fail *yang dijana ke direktori lanjutan yang betul.
./configure --help
sila periksa sama ada atau tidak ia berjaya
[...] Usage: ./configure [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print `checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for `--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or `..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [/usr/local] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, `make install' will install all the files in `/usr/local/bin', `/usr/local/lib' etc. You can specify an installation prefix other than `/usr/local' using `--prefix', for instance `--prefix=$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/PACKAGE] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] [...]
selepas pelanjutan dipasang. Anda masih perlu mengaktifkannya dengan memasukkannya dalam fail php.ini.
./configure \ --prefix=/opt/php-5.6 \ --with-pdo-pgsql \ --with-zlib-dir \ --with-freetype-dir \ --enable-mbstring \ --with-libxml-dir=/usr \ --enable-soap \ --enable-calendar \ --with-curl \ --with-mcrypt \ --with-zlib \ --with-gd \ --with-pgsql \ --disable-rpath \ --enable-inline-optimization \ --with-bz2 \ --with-zlib \ --enable-sockets \ --enable-sysvsem \ --enable-sysvshm \ --enable-pcntl \ --enable-mbregex \ --with-mhash \ --enable-zip \ --with-pcre-regex \ --with-mysql \ --with-pdo-mysql \ --with-mysqli \ --with-png-dir=/usr \ --enable-gd-native-ttf \ --with-openssl \ --with-fpm-user=nginx \ --with-fpm-group=nginx \ --with-libdir=lib64 \ --enable-ftp \ --with-imap \ --with-imap-ssl \ --with-kerberos \ --with-gettext \ --with-gd \ --with-jpeg-dir=/usr/lib/ --enable-fpm
[...] creating libtool appending configuration tag "CXX" to libtool Generating files configure: creating ./config.status creating main/internal_functions.c creating main/internal_functions_cli.c +--------------------------------------------------------------------+ | License: | | This software is subject to the PHP License, available in this | | distribution in the file LICENSE. By continuing this installation | | process, you are bound by the terms of this license agreement. | | If you do not agree with the terms of this license, you must abort | | the installation process at this point. | +--------------------------------------------------------------------+ Thank you for using PHP. config.status: creating php5.spec config.status: creating main/build-defs.h config.status: creating scripts/phpize config.status: creating scripts/man1/phpize.1 config.status: creating scripts/php-config config.status: creating scripts/man1/php-config.1 config.status: creating sapi/cli/php.1 config.status: creating sapi/fpm/php-fpm.conf config.status: creating sapi/fpm/init.d.php-fpm config.status: creating sapi/fpm/php-fpm.service config.status: creating sapi/fpm/php-fpm.8 config.status: creating sapi/fpm/status.html config.status: creating sapi/cgi/php-cgi.1 config.status: creating ext/phar/phar.1 config.status: creating ext/phar/phar.phar.1 config.status: creating main/php_config.h config.status: executing default commands
kami periksa lagi untuk memastikan pemasangan berjaya
make
sudo make install
Konfigurasi berikut akan membuat dua pelayan: Phalcon-Prd.Localhost berjalan pada Php 5.5.x dan Phalcon-dev.Localhost berfungsi dengan Php 5.6.x. Ini adalah contoh, anda boleh menyesuaikannya dengan apa sahaja yang anda mahukan, lihat dokumentasi nginx
/opt/php-5.6/bin/php --ini Configuration File (php.ini) Path: /opt/php-5.6/lib Loaded Configuration File: (none) Scan for additional .ini files in: (none) Additional .ini files parsed: (none)
Jika anda menggunakan sistem Linux, anda boleh mengedit fail hos:
sudo cp <span>/opt/source/php-src/php-fpm.conf.default /opt/php-5.6/etc/php-fpm.conf </span>sudo cp <span>/opt/source/php-src/php.ini-production /opt/php-5.6/lib/php.ini</span>
fail tuan rumah baru akan kelihatan seperti.
/opt/php-5.6/bin/php --ini Configuration File (php.ini) Path: /opt/php-5.6/lib Loaded Configuration File: /opt/php-5.6/lib/php.ini Scan for additional .ini files in: (none) Additional .ini files parsed: (none) ### Checking php /opt/php-5.6/bin/php --version PHP 5.6.2-dev (cli) (built: Oct 2 2014 17:20:23) Copyright (c) 1997-2014 The PHP Group Zend Engine v2.6.0, Copyright (c) 1998-2014 Zend Technologies
Ini memintas semua permintaan untuk phalcon-dev.localhost dan phalcon-prd.localhost kemudian menghantarnya ke pelayan anda.
Untuk ujian, kami membuat fail baru yang dipanggil Test.php dan memasukkannya ke dalam folder yang sepadan dengan konfigurasi di atas nginx. Dalam setiap fail, kami menambah arahan berikut.
sudo yum install nginx
Sekarang, menjalankan fail test.php di setiap pelayan, kita melihat phalcon 1.3.x phpinfo () di http: //phancon-prd.localhost/test.php manakala di http: //phancon-dev.localhost /test.php ada phpinfo () phalcon 2.0.x.
Tinggalkan maklum balas anda dalam komen di bawah dan, seperti biasa, sila kongsi artikel ini jika anda menyukainya!
soalan yang sering ditanya mengenai menjalankan pelbagai versi PHP pada satu pelayan
Bagaimana saya boleh memasang versi PHP tertentu pada pelayan saya? Dengan menggunakan arahan pemasangan apt-get diikuti dengan nama pakej untuk versi PHP yang dikehendaki. Sebagai contoh, untuk memasang Php 7.2, anda akan menjalankan perintah apt-get memasang Php7.2. Gunakan versi PHP tertentu dengan mengedit fail konfigurasi Apache dan menetapkan arahan ProxyPassMatch untuk menggunakan kolam PHP-FPM yang betul. Selepas itu, anda perlu memulakan semula Apache untuk menggunakan perubahan. Versi PHP khusus dengan membuat fail konfigurasi kolam baru dalam direktori /etc/php/7.2/fpm/pool.d/. Fail konfigurasi harus mengandungi tetapan untuk kolam php-fpm, seperti alamat pendengaran dan port, pengguna dan kumpulan, dan tetapan pengurus proses. Satu pelayan?
Atas ialah kandungan terperinci Cara menjalankan pelbagai versi PHP pada satu pelayan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!