This article is kindly sponsored by Xiuyi Linfeng and first published in Lundixingtianxia.
Apache supports php 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, during the last step of php installation, make install, we will see that the dynamic link library libphp5.so is copied to the modules directory of the apache2 installation directory, and LoadModule also needs to be added to the httpd.conf configuration file. statement to dynamically load the libphp5.so module to realize Apache's support for php.
Integration of php and apache requires the following steps:
1. Install the libiconv library
2. Install php source code
3. Configure apache to make it Support php
4. Test php
1. Install the libiconv library
The libiconv library provides an iconv command for applications that need to be converted. To achieve the conversion of one character encoding to another character encoding, for example, it can convert UTF8 encoding to GB18030 encoding, and vice versa.
Be sure to install the libiconv library when integrating php with apache, otherwise the system will report an error when making. 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 libiconv Library, as follows:
tar -xf libiconv-1.14.tar.gz
To install the libiconv library, first check the installation help information. As follows:
./configure --help
With the help of the above figure, 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
After the libiconv 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 you do not perform this step, execute make install when installing php, 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 PHP The command is 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 to enable the fastcgi function of php, that is, to enable 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 searches for 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
Use the command 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
Through the picture above, we can clearly see that php support is enabled in the apache configuration file httpd, and the libphp5.so file is also copied to the apache module directory.
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 that 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
4. Test php
After the above modifications are completed, we restart apache and use the following command:
/etc/init.d/httpd graceful
Note that this command can restart gracefully apache.
Open the site as follows:
Through the picture above, we can clearly see that apache already supports php .