debian編譯php
『壹』 php 編譯報錯 undefined reference to `lzma_code@XZ_5.0' 求助大神幫解決 好幾天了 沒找到辦法。。。
可是為什麼要自己編譯PHP呢,lnmp集成環境不香嗎,即使不相信別人的集成環境,Debian和Redhat下也有APT和YUM包管理可以直接安裝php,
例如Ubuntu下執行apt install php7.3 即可安裝php7.3
『貳』 debian下 如果用cgi模式安裝了php,如果安裝時--enable-ftp參數未加,安裝好後如何重新./configure
在把你編譯的重新 config 重新 make 重新 make install 即可
『叄』 ./configure編譯php時這個問題如何解決
PHP的安裝雖然有時候很簡單,可是如果應用一多,我們安裝起來就很頭痛了!出錯最多的就是安裝PHP擴展的時候了。其實不管是你是Apache類的應用還是Nginx類的,PHP的安裝都不是很簡單,雖然網上有很多configure參數,但是那不一定是適合你的,因為很多都直接關系著你的系統版本和內核。因此要自己親自不斷的調試,才能完全安裝成功。
本文總結了一些常見的configure錯誤信息和解決這些錯誤的經驗。
1、configure: error: No curses/termcap library found
網上有的說法是:–with-named-curses-libs=/usr/lib/libncursesw.so.5
其實是不對的,雖然能解決configure的錯誤,但是make的時候會提示錯誤,正確的做法應該是
centos: yum -y install ncurses-devel
debian: apt-get install libncurses5-dev
2、configure: error: xml2-config not found. Please check your libxml2 installation.
centos: yum -y install libxml2 libxml2-devel
debian: apt-get install libxml2-dev
3、configure: error: Cannot find OpenSSL』s
centos: yum -y install openssl-devel
4、configure: error: libjpeg.(a|so) not found
centos: yum -y install gd
centos: yum -y install gd-devel
debian: apt-get install libjpeg-dev
5、configure: error: libpng.(a|so) not found.
apt-get install libpng12-dev
6、configure: error: cannot find output from lex; giving up
yum -y install flex
7、configure: error: mod_deflate has been requested but can not be built e to prerequisite failures
centos: yum -y install zlib-devel openssl-devel
debian: apt-get install zlib1g-dev
8、configure: error: libxpm.(a|so) not found.
centos: yum -y install libxpm-dev
debian: apt-get install libxpm-dev
9、configure: error: freetype.h not found.
centos: yum install freetype-devel
debian: apt-get install libfreetype6-dev
10、configure: error: …No recognized SSL/TLS toolkit detected
centos: yum -y install libssl-dev
debian: apt-get install libssl-dev
11、Configure: error: Please reinstall the BZip2 distribution
centos: yum install bzip2 bzip2-devel
debian: apt-get install bzip2-devel
12、Configure: error: Please reinstall the libcurl distribution – easy.h should be in /include/curl/
centos: yum install curl curl-devel (For Redhat & Fedora)
# install libcurl4-gnutls-dev (For Ubuntu)
13、Configure: error: Unable to locate gmp.h
centos: yum install gmp-devel
14、Configure: error: Cannot find Mysql header files under /usr. Note that the MySQL client library is not bundled anymore!
yum install mysql-devel (For Redhat & Fedora)
# apt-get install libmysql++-dev (For Ubuntu)
15、Configure: error: Please reinstall the ncurses distribution
Solutions :
centos: yum install ncurses ncurses-devel
16、Checking for unixODBC support… configure: error: ODBC header file 『/usr/include/sqlext.h』 not found!
Solutions :
centos: yum install unixODBC-devel
17、Configure: error: Cannot find pspell
Solutions :
centos: yum install pspell-devel
18、configure: error: mcrypt.h not found. Please reinstall libmcrypt.
Solutions :
yum install libmcrypt libmcrypt-devel (For Redhat & Fedora)
# apt-get install libmcrypt-dev
19、Configure: error: snmp.h not found. Check your SNMP installation.
Solutions :
yum install net-snmp net-snmp-devel
20、開啟LDAP服務還需要
yum -y install openldap-devel openldap-servers openldap-clients
21、configure: error: cannot find output from lex; giving up
centos: yum -y install flex
22、configure: error: mod_deflate has been requested but can not be built e to prerequisite failures
centos: yum -y install zlib-devel openssl-devel
debian: apt-get install zlib1g-dev
『肆』 debian8怎麼安裝php7
debian8 編譯安裝 php7
目錄(?)[-]
Please reinstall the libcurl distributionCannot find OpenSSL
configure error Unable to locate gmph
Can not find recodeh anywhere under usr usrlocal usr optCannot find pspell
Please reinstall the mysql distribution
mcrypth not found Please reinstall libmcryptxml2-config not found
安裝編譯器
apt-get install build-essential autoconf automake libtool bison re2c獲取PHP安裝包
wget https://downloads.php.net/~ab/php-7.0.13RC1.tar.gz安裝dev包
apt-get install libxml2-dev libssl-dev libbz2-dev libjpeg-dev libpng-dev libxpm-dev libfreetype6-dev libgmp-dev libgmp3-dev libmcrypt-dev libmysqlclient15-dev libpspell-dev librecode-dev進行編譯安裝
./buildconf //用來生成configure腳本
./configure \
--prefix=/usr \
--with-config-file-path=/etc \
--enable-mbstring \
--enable-zip \
--enable-bcmath \
--enable-pcntl \
--enable-ftp \
--enable-exif \
--enable-calendar \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm \
--enable-wddx \
--with-curl \
--with-mcrypt \
--with-iconv \
--with-gmp \
--with-pspell \
--with-gd \
--with-jpeg-dir=/usr \
--with-png-dir=/usr \
--with-zlib-dir=/usr \
--with-xpm-dir=/usr \
--with-freetype-dir=/usr \
--with-t1lib=/usr \
--enable-gd-native-ttf \
--enable-gd-jis-conv \
--with-openssl \
--with-pdo-mysql=/usr \
--with-gettext=/usr \
--with-zlib=/usr \
--with-bz2=/usr \
--with-recode=/usr \
--with-mysqli=/usr/bin/mysql_config
備註:錯誤1:Cannot find OpenSSL's libraries 解決:
確認已安裝過 openssl、libssl-dev 包,還是會提示該錯誤;解決辦法:
root@test2:~/php-5.3.27# find / -name libssl.so輸出結果為: /usr/lib/x86_64-linux-gnu/libssl.so初步判斷它可能只會在 /usr/lib/ 下尋找 libssl.so 文件,於是:
ln -s /usr/lib/x86_64-linux-gnu/libssl.so /usr/lib錯誤2:debian Please reinstall the libcurl distribution 解決:
# RetHat CentOS or Fedora 使用下面安裝命令yum install curl curl-devel
# Debian or Ubuntu使用下面的安裝命令
apt-get install curl
apt-get install libcurl4-gnutls-dev
錯誤3:Unable to locate gmp.h 解決:
在https://launchpad.net/debian/+source/gmp 下載 gmp源碼包,接著 ./configure && make && make install編譯 安裝
make &&make install
報錯處理
Please reinstall the libcurl distributionaptitude search libcurl4
aptitude install libcurl4-gnutls-dev
Cannot find OpenSSL』
wget https://www.openssl.org/source/openssl-1.0.2j.tar.gztar -zxvf openssl-1.0.2j.tar.gz
cd openssl-1.0.2j
./config
make && make install
configure: error: Unable to locate gmp.h
sudo apt-get install libgmp-dev libgmp3-devln -s /usr/include/x86_64-linux-gnu/gmp.h /usr/include/gmp.hCan not find recode.h anywhere under /usr /usr/local /usr /opt.
apt-get install librecode-dev
Cannot find pspell
apt-get install libpspell-dev
Please reinstall the mysql distribution
apt-get install libmysqlclient15-dev
mcrypt.h not found. Please reinstall libmcrypt.
apt-get install libmcrypt-dev
xml2-config not found
apt-get install libxml2-dev
『伍』 debian nginx php應該放在哪個目錄
這個沒有規定, 默認安裝是在 /usr/bin下面, 這樣就不用加入到系統的PATH, LIB
如果是自己編譯,一般會是/usr/local/phpxx, 編譯完成之後, 設置當前用戶或者系統的PATH
『陸』 PHP8、FPM及部分擴展編譯安裝
本著能懶則懶的原則,之前我都是寶塔、lnmp腳本等「一鍵」
再不濟也得來個 apt/yum install php
什麼?源碼 make install ? 編譯參數一言難盡,勸退勸退...我只是想要個開發環境而已
沒關系!我來整理一下常用模塊以及參數!環境為 ubuntu/debian
檢查壓縮包的完整性,與官網 sha256比較
安裝以下包
官方的拓展分類
根據需要的模塊添加其後對應的參數
包含常用模塊,可以直接使用
編譯並安裝後
復制 php.ini 到默認目錄 /usr/local/lib/
檢查 php安裝是否正確
復制 fpm 配置文件、運行服務文件
www.conf php-fpm.conf php-fpm.service
修改 fpm 用戶和組,默認為nobody
修改服務文件,取消只讀 不然日誌不能讀寫無法啟動
設置自啟動並運行
本地起服務測試
No package 'libxml-2.0' found
No package 『sqlite3『 found
configure: WARNING: unrecognized options: –with-gd
No package 'zlib' found
No package 'libpng' found
No package 'oniguruma' found
No package 'libcurl' found
No package 'libsystemd' found
No package 'openssl' found
No package 'libzip' found
『柒』 debian怎麼運行php-fpm
php 5.3.3以後 源碼中已經內嵌了 php-fpm,不用象以前的php版本一樣專門打補丁了,只需要在configure的時候添加編譯參數即可。
關於php-fpm的編譯參數有 –enable-fpm –with-fpm-user=www –with-fpm-group=www –with-libevent-dir=libevent位置。
但是,php 5.3.3以後 的php-fpm 不再支持 php-fpm 以前具有的 /usr/local/php/sbin/php-fpm (start|stop|reload)等命令,需要使用信號控制:
master進程可以理解以下信號:
INT, TERM 立刻終止
QUIT 平滑終止
USR1 重新打開日誌文件
USR2 平滑重載所有worker進程並重新載入配置和二進制模塊
有了以上信號,php-fpm進程重啟就方便多了。
例子:
php-fpm 關閉:
代碼示例:
kill -INT `cat /usr/local/php/var/run/php-fpm.pid`
php-fpm 重啟:
代碼示例:
kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`
說明:
cat部分是php-fpm的進程號,可能是我用的5.4的問題。沒有用php-fpm.pid ,就沒有這個文件。
可以用 ps aux | grep php-fpm,使用第一個進程的進程號,測試可行。