本篇文章由PHP7教學專欄來介紹一下關於怎麼編譯安裝PHP7.4(ubuntu)。有一定的參考價值,有需要的朋友可以參考一下,希望對大家有幫助。
下載PHP7.4原始碼套件
wget https://www.php.net/distributions/php-7.4.26.tar.gz
解壓縮
tar -zxvf php-7.4.26.tar.gz
安裝PHP依賴函式庫
apt-get install libxml2 libxml2-dev sqlite3 libsqlite3-dev libcurl3-dev libxml-dev
執行./configure
# cd 到php源码目录 ./configure --prefix=/usr/local/php7 \ --with-config-file-path=/etc \ --with-fpm-user=test \ --with-fpm-group=test \ --with-curl --enable-fpm
注意:這裡只有很少的擴展,因為多的話編譯時間會很長。只是用來測試編譯安裝php,所以就沒有加入很多擴充。如果安裝完成後,後續想要加入更多擴展,又忘記了先前的編譯參數,可以在原始碼目錄 cat config.nice 就可以看到先前的編譯參數。然後加入新的參數重新編譯(別忘了先安裝擴充依賴函式庫)。
執行make && make install
執行make install 可加入 -j 參數,表示同時多個job工作,編譯速度會快一些。
make install -j 2
設定PHP環境變數
1. 開啟檔案
vim /etc/profile
2. 寫入內容
PATH=$PATH:/usr/local/php7/bin export PATH
3. 使環境變數立即生效
source /etc/profile
4. 輸入php -v 沒有報錯,環境變數設定成功
設定檔
# 修改配置文件 cd /usr/local/php7/etc cp php-fpm.conf.default php-fpm.conf cp php-fpm.d/www.conf.default php-fpm.d/www.conf # 修改pid文件位置 vim php-fpm.conf # 添加这行 pid = /run/php-fpm.pid # 创建php-fpm软链接 ln -s /usr/local/php7/sbin/php-fpm /usr/sbin/php-fpm
#啟動停止php-fpm
# 启动 /usr/sbin/php-fpm # 关闭 kill -INT `cat /run/php-fpm.pid` # 重启 kill -USR2 `cat /run/php-fpm.pid`
錯誤處理
#ERROR: [pool www] cannot get uid for user 'test'
1. 原因:由於前面編譯的時候設定了,php-fpm的使用者和使用者群組是test【隨便設定的】(--with-fpm-user=test --with-fpm-group= test),實際上這個使用者跟本不存在,有兩種處理辦法:
建立使用者和使用者群組為test
# 打开php-fpm.conf vim /usr/local/php7/etc/php-fpm.conf # 找到位置修改为(我nignx用户组是 www-data user = www-data) group = www-data2. ERROR: failed to retrieve TCP_INFO for socket: Protocol not available (92 )#原因:我用的是windows下的linux子系統(ubuntu系統),不是完全虛擬的系統,會有一點問題,但不影響。在宿主機工作管理員查看php-fpm已經啟動了。
解決方案:修改php-fpm.conf
# 方法1: listen = /run/php-fpm.sock # 方法2 设置 log_level = alert
新增守護程式### PHP源码里有自带的服务脚本,只需要复制到/etc/init.d 目录,加上执行权限就可以了。
# 要注意保持 /usr/local/php7/etc/php-fpm.conf 里面的 pid 文件位置是初始值。原来的是 pid = run/php-fpm.pid
# 在源码目录执行
cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod +x /etc/init.d/php-fpm
systemctl daemon-reload
# 使用方法与上面相同,也可以使用 systemctl
service php-fpm start
service php-fpm stop
service php-fpm restart
service php-fpm status
# 或者
systemctl start php-fpm
systemctl stop php-fpm
systemctl restart php-fpm
systemctl status php-fpm
以上是編譯安裝PHP7.4(ubuntu)的詳細內容。更多資訊請關注PHP中文網其他相關文章!