我需要在PHP-FPM中启用对POSIX ACL的支持。 我可以使用getfacl获取ACL列表,并使用shell中的setfacl -m设置它们,以便我的内核支持它。 我已经下载了PHP7.0_7.0.19的源码
$ cd /tmp/ $ apt-get source php7.0
并更新了debian/rules文件以启用ACL支持:
$ cd php7.0-7.0.19/ $ vim debian/rules
然后在第238行( export fpm_config = \ )我已经添加--with-fpm-acl=yes所以这个configuration看起来像:
export fpm_config = \ --prefix=/usr --enable-fpm --enable-cli --disable-cgi --disable-phpdbg \ --sysconfdir=/etc/php/$(PHP_NAME_VERSION)/fpm \ --with-fpm-user=www-data --with-fpm-group=www-data \ --with-config-file-path=/etc/php/$(PHP_NAME_VERSION)/fpm \ --with-config-file-scan-dir=/etc/php/$(PHP_NAME_VERSION)/fpm/conf.d \ --with-fpm-acl=yes \ $(COMMON_CONFIG) \ --with-libevent-dir=/usr \ $(CONFIGURE_SYSTEMD)
我跑
dpkg-buildpackage -us -uc | tee /tmp/php_build_log.log
但我得到这个错误:
configure: exit 1 cd /tmp/php7.0-7.0.19 debian/rules:327: recipe for target 'override_dh_auto_configure-arch' failed make[1]: Leaving directory '/tmp/php7.0-7.0.19' debian/rules:275: recipe for target 'binary' failed
这是/tmp/php_build_log.log
好的,find了罪魁祸首。 第一:
[...] checking sys/acl.h usability... no checking sys/acl.h presence... no checking for sys/acl.h... no checking for acl_free in -lacl... no [...]
解
$ apt-file search /usr/include/sys/acl.h libacl1-dev: /usr/include/sys/acl.h $ sudo apt-get install libacl1-dev
下一个(我认为这是失败的主要原因)
## --------- ## ## Platform. ## ## --------- ## hostname = eva02 uname -m = x86_64 uname -r = 4.9.0-3-amd64 uname -s = Linux uname -v = #1 SMP Debian 4.9.30-2+deb9u2 (2017-06-26) /usr/bin/uname -p = unknown /bin/uname -X = unknown /bin/arch = unknown /usr/bin/arch -k = unknown /usr/convex/getsysinfo = unknown /usr/bin/hostinfo = unknown /bin/machine = unknown /usr/bin/oslevel = unknown /bin/universe = unknown
由于错误提到了override_dh_auto_configure-arch ,我认为规则脚本无法确定架构,因为/bin/arch不存在, /usr/bin/arch没有-k开关,但调用/usr/bin/arch给x86_64所以我做了一个符号链接
$ sudo ln -s /usr/bin/arch /bin/arch
现在
$ debuild
成功完成,我已经签署了deb包。