PHP 7.4 checking for libzip 和 failed to open error_log 問題

來源: https://hqidi.com/154.htmlphp

 

兩個深坑,成年阿根廷龍踩出來的坑,網上都沒找到解決方法,都是本身摸索出來的。html

前面一切順利:python

yum install -y libxml2 libxml2-devel libxml2-python curl curl-devel libjpeg libjpeg-devel libpng libpng-devel freetype-devel libmcrypt libmcrypt-devel gd gd-devel gcc-c++ gcc openssl openssl-devel libsqlite3x-devel oniguruma-devel libicu-devel wget https://www.php.net/distributions/php-7.4.2.tar.gz tar xf php-7.4.2.tar.gz cd php-7.4.2 ./configure --prefix=/usr/local/php --enable-opcache --with-config-file-path=/usr/local/php/etc --enable-mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --enable-fpm --enable-static --enable-inline-optimization --enable-sockets --with-zip --enable-calendar --enable-bcmath --enable-soap --enable-mbstring --with-zlib --with-iconv --enable-gd --with-xmlrpc --enable-mbstring --with-curl --with-freetype --with-mysql-sock=/var/lib/mysql/mysql.sock --disable-ipv6 --disable-debug --with-openssl --disable-maintainer-zts --enable-intl

至於configure的時候,配置參數的變動、棄用等這種小問題就不說了。mysql

No package 'libzip' found

我不知道網上的教程是怎麼回事,反正在centos7+PHP 7.4.2 環境下,網上的全部教程都不對,一個都不對
這個問題的完整報錯以下:linux

checking for libzip >= 0.11... no configure: error: Package requirements (libzip >= 0.11) were not met: No package 'libzip' found Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables LIBZIP_CFLAGS and LIBZIP_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details.

報錯提示很是明顯,配置程序沒有找到libzip庫,你用yum安裝libzip-devel的話,安裝的版本是0.10,版本達不到要求。因此,此時咱們須要卸載掉yum安裝的libzip而後手動安裝新版。sql

yum remove libzip libzip-devel wget https://hqidi.com/big/libzip-1.2.0.tar.gz tar -zxvf libzip-1.2.0.tar.gz cd libzip-1.2.0 ./configure make && make install

在網上找到的教程到了這一步就直接讓你繼續在PHP源碼目錄裏面執行configure程序繼續配置了,其實你雖然已經安裝了libzip1.2,可是PHP的configure程序依然找不到,不知道你安裝在哪,你得告訴PHP的configure程序,我安裝了libzip 1.2,而且安裝在何處。之前是用ldconfig來通告系統所需動態庫文件的位置,如今用pkg-config。
我剛剛提供的方法安裝的libzip默認被安裝到了 /usr/local/lib 在這個目錄下你能看到libzip.so libzip.so.5 libzip.so.5.0.0 還有一個pkgconfig目錄。
因此,真正的解決方法來了,在你configure的會話窗口直接輸入以下內容:
export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig/"
上面命令的做用就是告訴configure程序,去/usr/local/lib 目錄下找庫文件,這樣他就能找到libzip.so
此時,你繼續./configure將會很順利的看到
Thank you for using PHP.centos

PHP7報錯Read-only file system (30)

當你照着 此文 安裝好PHP,並作好systemd服務管理文件,你會發現用systemctl start php-fpm 沒法正常啓動php-fpm 報了一個很奇怪的錯。
ERROR: failed to open error_log (/usr/local/php/var/log/php-fpm.log): Read-only file system (30)
此時,selinux是關閉狀態,普通用戶對這個文件也可寫,問題就迷離了。
解決方法:
打開 /usr/lib/systemd/system/php-fpm.service 把
ProtectSystem=true
改爲
ProtectSystem=falsecurl

當這個值爲true的時候,php-fpm進程將以只讀的方式掛載 /usr 目錄,這就是問題所在。具體可參考
https://www.freedesktop.org/software/systemd/man/systemd.exec.html#ProtectSystem=socket

原創文章,轉載請註明: 轉載自笛聲ide

本文連接地址: PHP 7.4 checking for libzip 和 failed to open error_log 問題

相關文章
相關標籤/搜索