Home > Article > Backend Development > How to compile and install php7 from source code
PHP Video Tutorial"
First release the installation package :tar -xvzf php-7.0.5.tar.gz cd php-7.0.5Next, configure the parameters. If there is no libxml2 and libxml2-devel before configuration, an error will be reported, so libxml2 should be updated and libxml2-devel should be installed. Use online installation:
yum -y install libxml2 yum -y install libxml2-develSupplementary, because Different operating system environments have different completeness of system installation and development environment packages. Therefore, it is recommended to make necessary selections when installing the operating system. You can also execute all the commands in a unified manner to install the uninstalled components. If they are already installed, It may be upgraded. If the version is completely consistent, no operation will be performed. In addition to the above two commands, the commands are summarized as follows:
yum -y install openssl yum -y install openssl-devel yum -y install curl yum -y install curl-devel yum -y install libjpeg yum -y install libjpeg-devel yum -y install libpng yum -y install libpng-devel yum -y install freetype yum -y install freetype-devel yum -y install pcre yum -y install pcre-devel yum -y install libxslt yum -y install libxslt-devel yum -y install bzip2 yum -y install bzip2-develThe above packages are basically enough. If you find any problems, add them. After the installation is complete, execute the configuration:
./configure --prefix=/usr/local/php --with-curl --with-freetype-dir --with-gd --with-gettext --with-iconv-dir --with-kerberos --with-libdir=lib64 --with-libxml-dir --with-mysqli --with-openssl --with-pcre-regex --with-pdo-mysql --with-pdo-sqlite --with-pear --with-png-dir --with-jpeg-dir --with-xmlrpc --with-xsl --with-zlib --with-bz2 --with-mhash --enable-fpm --enable-bcmath --enable-libxml --enable-inline-optimization --enable-gd-native-ttf --enable-mbregex --enable-mbstring --enable-opcache --enable-pcntl --enable-shmop --enable-soap --enable-sockets --enable-sysvsem --enable-sysvshm --enable-xml --enable-zipIn fact, there are more configuration items here than the above. You can use the ./configure --help command. View all options. Note here that native support for --with-mysql no longer exists in php7, and operations have become mysqli or pdo. The above options are completely sufficient for normal PHP development. If necessary, you can choose Manually open the corresponding module Then execute the compilation:
makeThe compilation time may be a bit long. After the compilation is completed, execute the installation:
make installThe default installation location of php is already above Specify it as /usr/local/php, then configure the corresponding file:
cp php.ini-development /usr/local/php/lib/php.ini cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf ln -s /usr/local/php/sbin/php-fpm /usr/local/binThen set php.ini, use: vim /usr/local/php/lib/php.ini to open the php configuration file and find cgi .fix_pathinfo configuration item, this item is commented out by default and has a value of 1. According to the official documentation, this is to prevent Nginx from sending requests to the back-end PHP-FPM module when the file does not exist, thereby avoiding malicious script injection attacks. , so this item should be uncommented and set to 0 # Save and exit after setting Another place to note is the location of the php.ini configuration file. Set in the configuration parameters before compilation. The compilation parameters can be written as: --with-config-file-path=/usr/local/php. In this case, php will go back to the specified directory to read the php.ini configuration file. If you do not add this The default location of the parameters is the lib directory under the PHP installation directory. The details can also be viewed in the phpinfo() output interface. If php.ini is placed in other locations and cannot be read by PHP, then all configuration modifications will not take effect. This should be noted At this time, you should first create a web user:
groupadd www-data useradd -g www-data www-dataThen some online tutorials say to modify php-fpm.conf to add the users and groups created above. At this time, use vim / usr/local/etc/php-fpm.conf After opening the file, the official location cannot be found: If you add it in a random location at this time, then the next step When starting php-fpm, a directory not found error will be reported, so do not add users and groups in php-fpm.conf. At this time, go to the last line of php-fpm.conf and you will find the following content (if added during compilation The --prefix option will automatically complete the following positions. The default is empty below, please note): All confs in the php-fpm.d directory are introduced here. Configuration file, but NONE needs to be modified to our actual directory: /usr/local
默认情况下etc/php-fpm.d/下有一个名为www.conf.defalut的配置用户的文件,执行下面命令复制一个新文件并且打开:
cp /usr/local/etc/php-fpm.d/www.conf.default /usr/local/etc/php-fpm.d/www.conf vim /usr/local/etc/php-fpm.d/www.conf
默认user和group的设置为nobody,将其改为www-data
修改完成之后,保存并退出,然后执行以下命令启动php-fpm服务:
/usr/local/bin/php-fpm
启动完毕之后,php-fpm服务默认使用9000端口,使用 netstat -ntlp | grep 9000 可以查看端口使用情况:
9000端口正常使用,说明php-fpm服务启动成功
然后执行 vim /usr/local/nginx/nginx.conf 编辑nginx配置文件,具体路径根据实际的nginx.conf配置文件位置编辑,下面主要修改nginx的server {}配置块中的内容,修改location块,追加index.php让nginx服务器默认支持index.php为首页:
然后配置.php请求被传送到后端的php-fpm模块,默认情况下php配置块是被注释的,此时去掉注释并修改为以下内容:
这里面很多都是默认的,root是配置php程序放置的根目录,主要修改的就是fastcgi_param中的/scripts为$document_root
修改完上面的,回到nginx.conf第一行,默认是#user nobody; 这里要去掉注释改为user www-data;或者user www-data www-data;表示nginx服务器的权限为www-data
修改完这些保存并退出,然后重启nginx:
/usr/local/nginx/nginx -s stop /usr/local/nginx/nginx
接下来编辑一个测试的php程序,在nginx下的html目录下创建test.php文件,打印一下php配置:
<?php phpinfo(); ?>
The above is the detailed content of How to compile and install php7 from source code. For more information, please follow other related articles on the PHP Chinese website!