centos 配置Apache2.4+php7,php无法解析、mysqli()报错找不到问题

踩坑日记

 

Centos编译安装Apache2.4

Centos 编译安装php7

最好先装Apache,然后装mysql,最后装php,原因如下:

回到编译安装php,配置参数的时候(只列出个人觉得需要注意的)

./configure \
--prefix=/usr/local/php7 \                         //这是php7安装目录..

--with-config-file-path=/usr/local/php7/etc \      
/*这是配置目录,就是在自己的php7安装目录下的etc/,编译的时候会自动新建的,到时候php.ini、php-fpm.conf什么的都放在这里,在httpd.conf就不用指定什么PHPIniDir啦  */

--with-mysql-sock=/var/run/mysql/mysql.sock \     
/*这个指定PHP7的Unix socket通信文件,所以说为什么要先安装mysql,可以用find / -name mysql.sock找到它的位置*/

--with-apxs2=/usr/local/apache2/bin/apxs \        
/* 这个注意了,这个就是先装Apache的原因,是指定Apache安装目录下的bin/apxs文件,所安装东西也要留意自己的安装目录,然后这个参数是用来生成libphp7.so的动态库,有了这个动态库服务器才可以解析php  */

 然后说到httpd.conf(只列出个人觉得需要注意的)

//在Apache安装目录下的conf/httpd.conf
//修改前最好备份
/* 找到
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
然后再下面添加*/    
AddType application/x-httpd-php .php

/*
然后找一下有没有 
LoadModule php7_module        modules/libphp7.so
这个是安装php7自动添加的 配置参数的时候有指定--with-apxs2参数才行的
这个就是加载php7的动态库,不加载的话是无法解析php的
*/

最后说到php.ini (只列出个人觉得需要注意的)

/*在你php7解压后的文件夹下复制php.ini-production文件到
你配置Php参数的时候--with-config-file-path=/usr/local/php7/etc \ 
的etc目录下
比如 cp php.ini-production /usr/local/php7/etc/php.ini

然后修改文件vim php.ini
指定动态库的位置
修改extension_dir = "/usr/local/php7/lib/php/extensions/no-debug-non-zts-20151012/"
注意/usr/local/php7/是你的php安装目录
这个路径下会有自动生成的mysqli.so、pdo_mysql.so等等动态库
如果你要连接mysql的话
就要在这个文件添加extension=mysqli.so
如果没有添加的话,你用php使用new mysqli()等等函数连接mysql数据库会报错找不到

*/

弄完了之后重启Apache服务器啦,用php -v 看看有没有显示正常的信息,如果有显示无法加载动态库的话,试试把extension_dir目录里的后缀名带a的删掉比如删掉mysqli.a,然后再重启试试 

就是上面这几个问题困扰了我好几天,所以先记下来了。。

你可能感兴趣的:(centos)