1. 程式人生 > >centos 配置Apache2.4+php7,php無法解析、mysqli()報錯找不到問題

centos 配置Apache2.4+php7,php無法解析、mysqli()報錯找不到問題

踩坑日記

最好先裝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,然後再重啟試試 

就是上面這幾個問題困擾了我好幾天,所以先記下來了。。