一、PHP5安装详细教程

要在服务器上安装PHP5,首先需要从其官方网站www.php.net获取源代码包。尽管PHP已推出更高版本,但PHP 5.6系列因其稳定性和广泛的兼容性,仍然是许多项目部署的主流选择。
开始安装前,请切换到常用的源码存放目录:
cd /usr/local/src
使用wget工具下载PHP 5.6.32的源码压缩包:
wget https://cn2.php.net/distributions/php-5.6.32.tar.bz2
下载完成后,解压该文件:
tar -jxvf php-5.6.32.tar.bz2
解压后进入生成的源码目录:
cd php-5.6.32/
接下来是关键步骤——编译配置。运行configure脚本并指定一系列参数,以启用对Apache、MySQL、图像处理等核心功能的支持:
./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache/bin/apxs --with-config-file-path=/usr/local/php/etc/ --with-mysql=/usr/local/mysql --with-pdo-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-libxml-dir --with-gd --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --with-bz2 --with-openssl --with-mcrypt --enable-soap --enable-gd-native-ttf --enable-mbstring --enable-sockets --enable-exif
配置过程中常会遇到依赖缺失的错误。例如,第一个常见错误是:
错误1:configure: error: freetype-config not found
解决方案:
在CentOS/RHEL系统上安装开发包:yum install freetype-devel
在Debian/Ubuntu系统上安装:apt-get install libfreetype6-dev
解决后,可能还会遇到第二个错误:
错误2:configure: error: mcrypt.h not found. Please reinstall libmcrypt.
解决方案:
对于CentOS系统,安装相应库:yum install libmcrypt libmcrypt-devel
依赖问题解决后,建议先验证配置是否成功完成:
echo $?
如果命令返回值为0,表示配置成功,可以进入编译阶段。
执行编译和安装命令:
make & make install
注意:有时在./configure后直接运行make可能会遇到类似 libtool: link: `ext/date/php_date.lo' is not a valid libtool object 的报错。此时,执行make clean清除之前的编译文件,然后重新运行make即可解决此问题。
安装完成后,可以检查PHP的安装目录:
ls /usr/local/php/
所有可执行文件位于/bin目录下,查看其占用空间:
du -sh /usr/local/php/bin/
PHP与Apache协同工作的核心在于libphp5.so模块文件,它通常被安装在Apache的模块目录:/usr/local/apache/modules/libphp5.so。即使后续删除了PHP主目录,只要此模块文件存在,Apache仍能正常解析PHP 5.6脚本。
要查看已编译安装的PHP模块列表,运行:
/usr/local/php/bin/php -m
最后,配置PHP环境。将生产环境适用的配置文件模板复制到预设的配置目录:
cp php.ini-production /usr/local/php/etc/php.ini
此目录路径由编译时的--with-config-file-path参数指定。复制后,可以使用以下命令查看完整的PHP配置信息,其中包含配置文件的加载路径:
/usr/local/php/bin/php -i | less
复制前该目录为空,命令无法显示配置;复制后即可查看所有详细的PHP运行配置。
二、PHP7安装与版本切换指南
完成PHP5安装后,我们继续讲解PHP7的安装步骤。两者流程基本相似,但在配置参数和细节上存在重要区别。
首先,同样进入源码目录:
cd /usr/local/src
下载PHP 7.1.6的源码包:
wget https://cn2.php.net/distributions/php-7.1.6.tar.bz2
解压下载的文件:
tar -jxvf php-7.1.6.tar.bz2
进入解压后的PHP7源码目录:
cd php-7.1.6
执行编译配置。请注意,安装前缀和配置路径已改为php7,且部分参数有所调整(例如PHP7已移除了旧的--with-mysql选项):
./configure --prefix=/usr/local/php7 --with-apxs2=/usr/local/apache/bin/apxs --with-config-file-path=/usr/local/php7/etc --with-pdo-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --with-bz2 --with-openssl --with-mcrypt --enable-soap --enable-gd-native-ttf --enable-mbstring --enable-sockets --enable-exif
配置成功后,进行编译和安装:
make & make install
安装完成后,您的Apache服务器可能同时加载了PHP5和PHP7两个模块。通过以下命令可以查看Apache当前加载的所有模块:
/usr/local/apache/bin/apachectl -M
在输出列表中,您可能会看到php5_module和php7_module。Apache实际使用哪个版本来解析PHP脚本,完全取决于其配置文件。
因此,需要编辑Apache的主配置文件:
vim /usr/local/apache/conf/httpd.conf
在文件中查找包含php5.so或php7.so的LoadModule指令。要禁用某个PHP版本,只需在该行前添加#号注释掉它。Apache将仅使用未被注释的PHP模块,从而实现PHP5与PHP7版本在同一服务器环境下的灵活切换与管理。
