Home > Article > Backend Development > Mud: php5.6 source code installation and apache integration
This article is kindly sponsored by Xiu Yilin Feng, and was first published in The world of mud.
apache’s support for php is supported through apache’s mod_php5 module, which is different from nginx. nginx can parse php through a third-party fastcgi processor. For information about the integration of nginx and php, please see "Mud: php5.6 source code installation and php-fpm configuration and nginx integration".
If you compile and install php from source code, you need to specify --with-apxs2=/usr/local/apache2/bin/apxs during compilation to tell the compiler to provide parsing of php through apache's mod_php5 module.
At the same time, when making install in the last step of php installation, we will see that the dynamic link library libphp5.so is copied to the modules directory of the apache2 installation directory, and the LoadModule statement needs to be added to the httpd.conf configuration file. Dynamically load the libphp5.so module to realize Apache's support for php.
Integration of php and apache requires the following steps:
1. Install libiconv library
2. PHP source code installation
3. Configure apache to support php
4. Test php
1. Install the libiconv library
The libiconv library provides an iconv command for applications that need to convert, to convert one character encoding to another character encoding, for example, it can convert UTF8 encoding into GB18030 encoding, and vice versa.
Be sure to install the libiconv library when integrating php with apache, otherwise the system will report an error during make. The error message is as follows:
make: *** [sapi/cli/php] Error 1
/usr/bin/ld: cannot find -liconv
collect2: ld returned 1 exit status
make: *** [sapi/cli/php] Error 1
Now start the formal installation of the libiconv library, first download the libiconv library, as follows:
wget http:// ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz
Unzip the libiconv library as follows:
tar -xf libiconv-1.14.tar.gz
Install the libiconv library, first check the installation help information. As follows:
./configure --help
With the help in the above picture, we can see that the default installation path of the libiconv library is /usr/local. Now start installing the libiconv library as follows:
./configure --prefix=/usr/local
make && make install
libi After the conv library is installed , it is recommended to add the /usr/local/lib library to the /etc/ld.so.conf file, and then use /sbin/ldconfig to make it take effect. As follows:
echo "/usr/local/lib">>/etc/ld.so.conf
/sbin/ldconfig
If this step is not performed If so, execute make install when installing php, and the system will report an error. The error message is as follows:
/root/php-5.6.2/sapi/cli/php: error while loading shared libraries: libiconv.so.2: cannot open shared object file: No such file or directory
2. PHP source code installation
For php source code installation, please refer to the article "Mud: php5.6 source code installation and php-fpm configuration and nginx integration ". Download and compile the php command as follows:
wget http:// mirrors.sohu.com/php/php-5.6.2.tar.gz
./configure --enable-fpm --enable-mbstring --with-mysql=/usr/local/mysql --with- iconv-dir=/usr/local --with-apxs2=/usr/local/apache2/bin/apxs
Note that the function of --enable-fpm in the above command is Turn on the fastcgi function of php, that is, turn on the php-fpm function.
--with-mysql=/usr/local/mysql is to enable PHP to support mysql, and /usr/local/mysql is the installation path of the mysql database.
--enable-mbstring means enabling the mbstring module. The main function of the mbstring module is to detect and convert encodings and provide corresponding string functions for multi-byte operations. Currently, the internal encoding of PHP only supports ISO-8859-*, EUC-JP, and UTF-8. Other encoding languages cannot be displayed correctly on the PHP program, so we need to enable the mbstring module.
--with-iconv-dir=/usr/local specifies the location where php stores the libiconv library.
--with-apxs2=/usr/local/apache2/bin/apxs specifies the location where php finds apache.
After compilation is completed, let’s make again. When making, we pay attention to adding the -liconv parameter. If the -liconv parameter is not added, the system will report an error during make compilation. The error message is as follows:
Generating phar.php
php-5.3.16/sapi/cli/php: error while loading shared libraries: libiconv.so.2: cannot open shared object file: No such file or directory
The command is as follows:
make ZEND_EXTRA_LIBS='-liconv'
We can also modify the Makefile and add -liconv to the ZEND_EXTRA_LIBS line. As follows:
vi Makefile
make install
passed In the picture above, we can clearly see that httpd is enabled in the apache configuration file php support, and also copy the libphp5.so file to the module directory of apache.
3. Configure apache to support php
After php is installed, we can modify apache’s configuration file httpd.conf to support php.
We only need to add the following two lines of code to the httpd.conf file:
LoadModule php5_module modules/libphp5.so
AddType application/x-httpd-php .php
Note, Among them is the LoadModule php5_module modules/libphp5.so line. When we check the httpd.conf file, we will find that this line already exists. That's because it was added when installing php. Now we just need to add the AddType application/x-httpd-php .php line.
vi /usr/local/apache2/conf/httpd.conf
In addition, we also need to modify apache’s default homepage file and add index.php. The content is as follows:
echo "">/usr/local/apache2/htdocs/index.php
cat /usr/local/apache2/htdocs/index.php
四、测试php
以上修改完毕后,我们重新启动apache,使用如下命令:
/etc/init.d/httpd graceful
Note that this command can gracefully restart apache.
Open the site as follows:
Through the picture above, we can clearly see that apache already supports php.
The above has introduced the mud: php5.6 source code installation and apache integration, including aspects of the content. I hope it will be helpful to friends who are interested in PHP tutorials.