之前在搭建lamp环境时在安装php这环节花了不少时间,在此记录一下,我这里安装的php5.6.30版本,其实安装方法大同小异,废话少说,直接来
1:运行以下命令安装依赖包
yum install libmcrypt libmcrypt-devel mhash mhash-devel libxml2 libxml2-devel bzip2 bzip2-devel -y
2:依次运行以下命令下载稳定版源码包并解压、编译
注意:下载PHP稳定版源码包需要良好的网络环境。如果下载失败,请先运行命令cd,然后运行命令rm -rf mirror后,重新下载PHP稳定版源码包。
wget https://cn2.php.net/get/php-5.6.30.tar.bz2/from/this/mirror
cp mirror php-5.6.30.tar.bz2
解压到/usr/local/src目录
tar xvf php-5.6.30.tar.bz2 -C /usr/local/src
cd /usr/local/src/php-5.6.30
在执令以下这堆命令
./configure --prefix=/usr/local/php \
--with-config-file-scan-dir=/etc/php.d \
--with-apxs2=/usr/local/apache2/bin/apxs \
--with-config-file-path=/etc \
--with-pdo-mysql=mysqlnd \
--with-mysqli=/usr/local/mysql/bin/mysql_config \
--enable-mbstring \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--with-zlib \
--with-libxml-dir=/usr \
--with-openssl \
--enable-xml \
--enable-sockets \
--enable-fpm \
--with-bz2
或许会出现这些报错
configure: error: wrong mysql library version or lib not found. Check config
网上说把以上命令中的“–with-mysqli=/usr/local/mysql/bin/mysql_config \”
改成自己mysql_config的路径可以解决,但是我试了还是不行,因为我的mysql5.7是之前在官网下载压缩包事先安装好的,这个问题我是这样解决的:
把“–with-mysqli=/usr/local/mysql/bin/mysql_config \”改成“with-mysqli \”,即是不写路径,然后就可以安装成功了(网上说是因为php 本身有这个模块 ,不用再添加mysql 的配置文件路径)
如图
然后再执行(这步需要点时间)
make && make install
若ECS实例规格内存较小,配置时可关闭不需要的PHP扩展,节省内存。例如,在./configure命令中添加–disable-fileinfo选项,关闭fileinfo扩展。
3:运行以下命令复制PHP的配置文件
cp php.ini-production /etc/php.ini
4:运行命令vi /usr/local/apache2/conf/httpd.conf打开Apache配置文件,按下i键开始编辑,这里是我自己apache服务器的安装路径,改成自己的即可
找到ServerName参数,添加ServerName localhost:80。
找到Directory参数,在Require all denied前面添加#,然后添加Require all granted
找到DirectoryIndex index.html,将它替换为DirectoryIndex index.php index.html
<IfModule dir_module>
DirectoryIndex index.php index.html
</IfModule>
找到如下内容:
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
添加以下内容
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
添加后是这样的
然后保存退出即可,先按esc,再:wq
5:添加Apache对解析PHP的支持。
运行以下命令打开index.php文件
vi /usr/local/apache2/htdocs/index.php
按下i键进入编辑模式,并添加以下内容:
<?php
phpinfo();
?>
按下Esc键,然后输入:wq并回车以保存并关闭index.php文件,并重启apache即可
systemctl restart httpd
然后再浏览器输入服务器地址,效果如图
到此php5.6.30安装成功
6:添加mysql扩展
1 进入php的安装包目录
/usr/local/src/php-5.6.30/ext/mysql
2执行phpize
/usr/local/php/bin/phpize
3执行./configure命令,这里把php-config文件和mysql目录换成自己的所在目录即可
./configure --with-php-config=/usr/local/php/bin/php-config --with-mysql=/usr/local/mysql/mysql-5.7.27/
4再依次执行以下命令
make
make install
然后在/usr/local/src/php-5.6.30/ext/mysql/modules下看到了mysql.so
5 修改php.ini,添加extension = mysql.so,将mysql.so拷贝到extension_dir目录下,extension_dir在php.ini中设置,如下图
测试是否成功,这一步很重要,编辑/usr/local/apache2/htdocs下的index.php,这里换成自己apache的路径即可,写如下代码测试
<?php
#phpinfo();
$con = mysql_connect('localhost','用户名','密码');
if($con){
die('ok');
}else{
die('Could not connect: ' . mysql_error());
}
?>
重启apache生效
systemctl restart httpd
再浏览器输入地址,看见ok说明成功
7:解决在任意目录输入php命令提示“-bash: php: command not found”
在etc/profile文件下增加以下代码(换成自己安装目录的):
export PATH=$PATH:/usr/local/php/bin
然后使文件生效
source /etc/profile
测试效果,输入php -v,成功
8:安装ZendGuardLoader插件
Zend Guard是目前市面上比较成熟的PHP源码加密产品,加密之后的PHP代码需要启用ZendGuardLoader插件才能正确解析,这里php是5.6,故插件也安装5.6的。
下载
wget http://downloads.zend.com/guard/7.0.0/zend-loader-php5.6-linux-x86_64_update1.tar.gz
解压
tar xf zend-loader-php5.6-linux-x86_64_update1.tar.gz
这里出点问题,就是一直无法加载ZendGuardLoader.so,但是路径是对的,可能是因为zend是编译的时候没有加参数项,用不了,最后是大佬帮我用yum命令重新安装lamp环境,很感谢大佬,yum命令安装方便省事,谨记!
9:扩展fileinfo
为什么扩展fileinfo?
fileinfo的函数通过在文件的给定位置查找特定的魔术字节序列 来猜测文件的内容类型以及编码(即获取文件的MIME信息)
这里需换成自己的目录位置,不知道的可以通过find 命令进行查看,例如
find / -name fileinfo
1在源码目录下找到fileinfo目录并进入
cd /usr/local/src/php-5.6.30/ext/fileinfo
2在该目录下执行phpize安装扩展。
/usr/local/php/bin/phpize
执行后会出现以下代码
Configuring for:
PHP Api Version: 20131106
Zend Module Api No: 20131226
Zend Extension Api No: 220131226
3编译
./configure --with-php-config=/usr/local/php/bin/php-config
4安装
make && make install
如图效果,说明安装成功