【发布时间】:2020-08-05 19:19:55
【问题描述】:
我最近需要使用 PHP 进行多线程,所以我从源代码编译了 7.4 版以启用 ZTS 模式(需要使用 Parallel 新扩展):
-
我在我的服务器上克隆了 PHP 源代码库
-
git checkout PHP-7.4 -
./buildconf --force -
我从教程中获取了这个配置字符串,我不得不承认我并没有真正理解所有选项:
CONFIGURE_STRING="--prefix=/etc/phpzts --with-bz2 --with-zlib --enable-zip --disable-cgi
--enable-soap --enable-intl --with-openssl --with-readline --with-curl --enable-ftp
--enable-mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --enable-sockets
--enable-pcntl --with-pspell --with-enchant --with-gettext --with-gd --enable-exif
--with-jpeg-dir --with-png-dir --with-freetype-dir --with-xsl --enable-bcmath
--enable-mbstring --enable-calendar --enable-simplexml --enable-json --enable-hash
--enable-session --enable-xml --enable-wddx --enable-opcache --with-pcre-regex
--with-config-file-path=/etc/phpzts/config --with-config-file-scan-dir=/etc/phpzts/config
--enable-cli --enable-debug --enable-fpm --with-fpm-user=www-data --with-fpm-group=www-data
--with-mcrypt --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-shmop --enable-parallel
--enable-maintainer-zts" -
./configure $CONFIGURE_STRING -
make && make install -
将 php.ini 文件从 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
...
尽管所有内容都有注释,但看起来所有这些库都是由 php 加载的,因为我在输入 /etc/phpzts/bin/php -m 时找到了它们的行,我可以使用它们。在 php.ini 文件中注释时如何加载它们?
此外,例如,当我取消注释 extension=openssl 时,php 会说“无法加载动态库”。 extension_dir 文件夹只包含一个名为 opcache.so 的文件和另一个 opcache.a。
php 如何在扩展文件夹中没有任何内容的情况下实际加载所有这些扩展?为什么加载了openssl(我可以使用其中的函数),但是当我取消注释php.ini中的extension=openssl行时,php仍然说“无法加载动态库”?为什么我要为apache版本的php安装php扩展时必须运行apt-get install php7.4-mbstring,而看起来所有扩展都已预先安装?
【问题讨论】:
标签: php