First of all, I recommend an article php 7 Release Date Arrived: Will Developers Adopt PHP 7? - PHP Classes blog. It talks about whether I will use PHP7. Personally, I will use it without hesitation, but the production environment is not my decision, so I can only update the PHP version in my own development environment. So, what about you?
First of all, I recommend an article php 7 Release Date Arrived: Will Developers Adopt PHP 7? - PHP Classes blog.
It talks about whether I will use PHP7. Personally, I will use it without hesitation, but I don’t have the final say in the production environment, so I can only update the PHP version in my own development environment. . So, what about you?
The author is using the openSUSE42.1 distribution of Linux. There is no installation package for PHP7 in Yast, so I can only compile and install it manually. As a PHP developer, I really hope to learn how to compile and install PHP7. I have tried it several times before, but every time I install it, I have to go online to find various information. So, after the successful installation this time, I want to go through my own installation process. And record the problems encountered so that you can refer to them later and share them with those who need them.
Getting to the point, to compile and install PHP7, you must first download the source code of PHP7. You can clone it on github or download it from the PHP official website. After downloading, extract it to the /usr/local/src directory and rename the directory to php7. Enter the directory.
./buildconf
./<span style="color: #000000;">configure \ </span>--PRefix=/usr/local/<span style="color: #000000;">php7 \ </span>--exec-prefix=/usr/local/<span style="color: #000000;">php7 \ </span>--bindir=/usr/local/php7/<span style="color: #000000;">bin \ </span>--sbindir=/usr/local/php7/<span style="color: #000000;">sbin \ </span>--includedir=/usr/local/php7/<span style="color: #000000;">include \ </span>--libdir=/usr/local/php7/lib/<span style="color: #000000;">php \ </span>--mandir=/usr/local/php7/php/<span style="color: #0000ff;">man</span><span style="color: #000000;"> \ </span>--with-config-<span style="color: #0000ff;">file</span>-path=/usr/local/php7/<span style="color: #000000;">etc \ </span>--with-MySQL-sock=/var/run/mysql/<span style="color: #000000;">mysql.sock \ </span>--with-mcrypt=/usr/<span style="color: #000000;">include \ </span>--with-<span style="color: #000000;">mhash \ </span>--with-<span style="color: #000000;">openssl \ </span>--with-mysqli=<span style="color: #000000;">shared,mysqlnd \ </span>--with-pdo-mysql=<span style="color: #000000;">shared,mysqlnd \ </span>--with-<span style="color: #000000;">gd \ </span>--with-<span style="color: #000000;">iconv \ </span>--with-<span style="color: #000000;">zlib \ </span>--enable-<span style="color: #0000ff;">zip</span><span style="color: #000000;"> \ </span>--enable-inline-<span style="color: #000000;">optimization \ </span>--disable-<span style="color: #000000;">debug \ </span>--disable-<span style="color: #000000;">rpath \ </span>--enable-<span style="color: #000000;">shared \ </span>--enable-<span style="color: #000000;">xml \ </span>--enable-<span style="color: #000000;">bcmath \ </span>--enable-<span style="color: #000000;">shmop \ </span>--enable-<span style="color: #000000;">sysvsem \ </span>--enable-<span style="color: #000000;">mbregex \ </span>--enable-<span style="color: #000000;">mbstring \ </span>--enable-<span style="color: #0000ff;">ftp</span><span style="color: #000000;"> \ </span>--enable-gd-native-<span style="color: #000000;">ttf \ </span>--enable-<span style="color: #000000;">pcntl \ </span>--enable-<span style="color: #000000;">sockets \ </span>--with-<span style="color: #000000;">xmlrpc \ </span>--enable-<span style="color: #000000;">soap \ </span>--without-<span style="color: #000000;">pear \ </span>--with-<span style="color: #000000;">gettext \ </span>--enable-<span style="color: #000000;">session \ </span>--with-<span style="color: #000000;">curl \ </span>--with-jpeg-<span style="color: #0000ff;">dir</span><span style="color: #000000;"> \ </span>--with-freetype-<span style="color: #0000ff;">dir</span><span style="color: #000000;"> \ </span>--enable-<span style="color: #000000;">opcache \ </span>--enable-<span style="color: #000000;">fpm \ </span>--disable-<span style="color: #000000;">cgi \ </span>--with-fpm-user=<span style="color: #000000;">nginx \ </span>--with-fpm-group=<span style="color: #000000;">nginx \ </span>--without-<span style="color: #000000;">gdbm \ </span>--disable-fileinfo
Parameter description
prefix root directory of PHP7 installation
with-config-file-path PHP7 configuration file directory
The result after executing the above configuration command is as shown below:
When executing the above command, you will encounter some prompts about missing dependencies. The dependency problems I encountered are listed below:
Error:
configure: error: xml2-config not found. Please check your libxml2 installation.
Solution:
zypper <span style="color: #0000ff;">install</span> libxml2-devel
Error:
configure: WARNING: unrecognized options: --with-mysql
Solution:
取消这个选项,这个选项是不存在的
Error:
configure: error: jpeglib.h not found.
Solution:
zypper <span style="color: #0000ff;">install</span> libjpeg-devel
Error:
configure: error: mcrypt.h not found. Please reinstall libmcrypt.
Solution:
zypper <span style="color: #0000ff;">install</span> libmcrypt-devel
Error:
checking <span style="color: #0000ff;">for</span><span style="color: #000000;"> recode support... yes configure: error: Can not </span><span style="color: #0000ff;">find</span> recode.h anywhere under /usr /usr/local /usr /opt.
Solution:
zypper <span style="color: #0000ff;">install</span> librecode-devel
In general, when configuring, if you encounter something that is not available, open Yast and search for it. If it exists, install it, and then recompile to see what else is needed. If you can’t find it in Yast, then search online on Google .
<span style="color: #0000ff;">make</span> && <span style="color: #0000ff;">make</span> <span style="color: #0000ff;">install</span>
Among them, you can choose make test after make. It's just an optional step. I don't know if there will be any problems if you don't execute it, but I haven't encountered it yet.
After successful compilation and installation, check the PHP7 installation directory `ls /usr/local/php7`:
<span style="color: #0000ff;">cp</span> /usr/local/src/php7/php.ini-production /usr/local/php7/etc/<span style="color: #000000;">php.ini </span><span style="color: #0000ff;">cp</span> /usr/local/src/sapi/fpm/init.d.php-fpm /etc/init.d/php-<span style="color: #000000;">fpm </span><span style="color: #0000ff;">cp</span> /usr/local/php7/etc/php-fpm.conf.default /usr/local/php7/etc/php-<span style="color: #000000;">fpm.conf </span><span style="color: #0000ff;">cp</span> /usr/local/php7/etc/php-fpm.d/www.conf.default /usr/local/php7/etc/php-fpm.d/www.conf
Add
to the last line of the /etc/profile fileexport PATH=/usr/local/php7/bin:/usr/local/php7/sbin:$PATH
Then execute source /etc/profile
<span style="color: #0000ff;">mkdir</span> -p /var/log/php-fpm/ && <span style="color: #0000ff;">mkdir</span> -p /var/run/php-fpm && cd /var/run/ && <span style="color: #0000ff;">chown</span> -R nginx:nginx php-fpm
<span style="color: #0000ff;">chmod</span> +x /etc/init.d/php-<span style="color: #000000;">fpm chkconfig php</span>-fpm on
You can use the chkconfig command to view the list of startup services.
service php-fpm start
Check whether PHP is started successfully through ps aux | grep 'php'
At this point, PHP7 has been installed successfully, and you can start using PHP7!