centos 配置Apache2.4+php7,php無法解析、mysqli()報錯找不到問題
阿新 • • 發佈:2018-12-16
踩坑日記
最好先裝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,然後再重啟試試
就是上面這幾個問題困擾了我好幾天,所以先記下來了。。