我最近需要使用PHP进行多线程处理,所以我从源代码编译了7.4版本,启用了ZTS模式(需要使用并行的新扩展):
上克隆了PHP源代码回购
git checkout PHP-7.4./buildconf --forceCONFIGURE_STRING=“-前缀=/etc/phpzts-with-bz2-具有-zlib-启用-zip-禁用-cgi
-启用-soap-启用-intl-与-openssl-与-readline-具有-curl-启用-ftp
-启用-mysqlnd-with-mysqli=mysqlnd--具有-pdo-mysql=mysqlnd-启用-套接字
-启用-pcntl-使用-p拼写-有附着物-与-gettext-与-gd-启用-exif
-with-jpeg-dir-with-png-dir--具有-freetype-dir-with-xsl-启用-bc计量
-启用-mbstring-启用-日历-启用-simplexml-启用-json-启用-散列
-启用-会话-启用-xml-启用-wddx-启用-opcache-与-pcre-regex
-with-config-file-path=/etc/phpzts/config --with-config-file-scan-dir=/etc/phpzts/config
-启用-cli-启用-调试-启用-fpm-with-fpm-user=www-data-with-fpm-group=www-data
-带-mcrypt-启用-sysvmsg-启用-sysvsem-启用-sysvshm-启用-shmop并行
--enable-maintainer-zts"
./configure $CONFIGURE_STRINGmake && make install/etc/phpzts/bin/php --ini)将phpzts/config文件从php-src repo复制到phpzts/config(通过执行/etc/phpzts/bin/php --ini)成功加载该文件)。
所有从php扩展加载的函数在我的脚本中都能很好地工作,特别是mb_string函数、openssl函数、并行函数。,这就是我不明白的,。例如,我希望通过apt-get install php7.4-mbstring安装它们,就像我使用为apache安装的另一个php所做的那样。所有的扩展名都在我刚刚从源代码回购中复制的php.ini文件模板中进行了注释:
;extension=imap
;extension=ldap
;extension=mbstring
;extension=exif ; Must be after mbstring as it depends on it
;extension=mysqli
;extension=oci8_12c ; Use with Oracle Database 12c Instant Client
;extension=odbc
;extension=openssl
;extension=pdo_firebird
;extension=pdo_mysql
;extension=pdo_oci
;extension=pdo_odbc
...尽管所有的内容都有注释,但看起来所有这些librairies都是由php加载的,因为我在输入/etc/phpzts/bin/php -m时找到了它们的行,我可以使用它们。如何在php.ini文件中注释它们时加载它们?
此外,当我取消注释extension=openssl时,php说“无法加载动态librairy”。extension_dir文件夹只包含一个名为opcache.so的文件和另一个opcache.a。
当扩展文件夹中没有任何内容时,php如何实际加载所有这些扩展?为什么加载openssl (我可以使用其中的函数),但是当我在php.ini中取消注释php.ini行时,php仍然说“无法加载动态librairy”?当我想为apache版本的php安装php扩展时,为什么要运行apt-get install php7.4-mbstring,而看起来所有的扩展都是预先安装的呢?
发布于 2020-08-05 19:49:55
您已经将模块静态编译为php二进制文件。看这里,http://www.phpinternalsbook.com/php5/build_system/building_extensions.html
正如您从上一节中已经知道的那样,
扩展可以静态地构建到PHP二进制文件中,也可以编译成共享对象(.so)。静态链接是大多数绑定扩展的默认设置,而共享对象可以通过显式传递--启用-EXTNAME= shared或-with=shared到./
来创建。
https://stackoverflow.com/questions/63272157
复制相似问题