php forume,PHP 7.4 checking for libzip 和 failed to open error_log 问题

两个深坑,成年阿根廷龙踩出来的坑,网上都没找到解决方法,都是自己摸索出来的。

前面一切顺利:

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.gztar 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的时候,配置参数的变更、弃用等这种小问题就不说了。

No package 'libzip' found

我不知道网上的教程是怎么回事,反正在centos7+PHP 7.4.2 环境下,网上的所有教程都不对,一个都不对

这个问题的完整报错如下:

checking forlibzip >=0.11...noconfigure:error:Packagerequirements (libzip >=0.11)were notmet:Nopackage'libzip'found Consideradjusting the PKG_CONFIG_PATH environment variable ifyou installed software ina non-standard prefix.Alternatively,you may setthe environment variables LIBZIP_CFLAGS andLIBZIP_LIBS to avoid the need to call pkg-config.Seethe pkg-config man page formore details.

报错提示非常明显,配置程序没有找到libzip库,你用yum安装libzip-devel的话,安装的版本是0.10,版本达不到要求。所以,此时我们需要卸载掉yum安装的libzip然后手动安装新版。

yum remove libzip libzip-devel

wget https://hqidi.com/big/libzip-1.2.0.tar.gztar -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.

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=false

当这个值为true的时候,php-fpm进程将以只读的方式挂载 /usr 目录,这就是问题所在。具体可参考

https://www.freedesktop.org/software/systemd/man/systemd.exec.html#ProtectSystem=

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值