сентос 7, php 7.4
У нас был обычный php 7.4 для проекта. Это означает, что он регулярно устанавливался с менеджером пакетов. Однако теперь нам нужно было перекомпилировать php, потому что мы хотели работать с параллельным расширением, которое требует CLI ZTS PHP. Теперь компиляция php на windows была очень простой, но я не могу сказать то же самое об этом в Centos.
Основная проблема заключается в том, что некоторые расширения отсутствуют после того, как я их скомпилировал.
Процесс компиляции:
cd
git clone https://github.com/php/php-src.git
cd php-src
git checkout PHP-7.4.3
./buildconf --force
./configure --prefix=/usr/local/php7 \
--with-config-file-path=/usr/local/php7/etc \
--with-config-file-scan-dir=/usr/local/php7/etc/conf.d \
--enable-bcmath \
--with-bz2 \
--with-curl \
--enable-filter \
--enable-fpm \
--enable-gd \
--with-freetype \
--with-jpeg \
--enable-intl \
--with-mysql-sock=/var/lib/mysql/mysql.sock \
--with-openssl \
--enable-simplexml \
--enable-xmlreader \
--enable-xmlwriter \
--enable-pcntl \
--enable-shmop \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm \
--with-xsl \
--enable-opcache \
--enable-calendar \
--enable-sockets \
--enable-mbstring \
--with-zlib=~/libzip-1.6.1/build/ \
--with-zip \
--enable-exif \
--with-gettext \
--without-sqlite3 \
--with-mhash \
--enable-maintainer-zts
make -j2
sudo make install
Моя основная проблема заключается в том, что после завершения компиляции отсутствуют 2 "расширения" / модуля. Эти; mbstring
и zip
Затем, когда я проверяю установленные модули с помощью php -m | grep mbstring
или php -m | grep zip
, я не вижу их.
Так что мой вопрос будет быть; как я могу заставить эту работу работать? Я почти уверен, что существует множество ppl-компиляторов, PHP, и это очень простые c модули.
Дополнительная информация: mbstring требуется для установки этих пакетов: oniguruma oniguruma-devel
Когда этого не было, я получил сообщение об ошибке при компиляции php, что mbstring требует этого: oniguruma
Но после установки mbstring только что скомпилирован с php без каких-либо ошибок, и он все еще отсутствует.
Схожая ситуация с модулем zip. Требуется libzip
, который я установил так:
wget -c https://cmake.org/files/LatestRelease/cmake-3.16.0-Linux-x86_64.tar.gz
tar zxvf cmake-3.*
export PATH=$PATH:~/cmake-3.16.0-Linux-x86_64/bin
wget -c http://www.zlib.net/zlib-1.2.11.tar.gz
tar zxvf zlib-1.2.11.tar.gz
./configure
sudo make -j2
sudo make install
cd libzip*
mkdir build
cd build
cmake ..
make
make test
# when you use sudo here the root user's PATH will be used, so update it
sudo make install
# in that case if there was an issue during copying the built stuff
export PATH=$PATH:~/libzip-1.6.1/build/lib/
Тот же результат. Я также подумал, что можно было бы просто установить эти расширения с помощью менеджера пакетов, а затем просто поместить файлы .so в папку modules и включить их в файл modules.ini:
extension=zip.so
extension=mbstring.so
In В этом случае я получил эту ошибку:
PHP Warning: PHP Startup: Unable to load dynamic library 'zip.so' (tried: /usr/local/php7/lib/php/extensions/no-debug-zts-20190902/zip.so (/usr/local/php7/lib/php/extensions/no-debug-zts-20190902/zip.so: undefined symbol: executor_globals), /usr/local/php7/lib/php/extensions/no-debug-zts-20190902/zip.so.so (/usr/local/php7/lib/php/extensions/no-debug-zts-20190902/zip.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library 'mbstring.so' (tried: /usr/local/php7/lib/php/extensions/no-debug-zts-20190902/mbstring.so (/usr/local/php7/lib/php/extensions/no-debug-zts-20190902/mbstring.so: cannot open shared object file: No such file or directory), /usr/local/php7/lib/php/extensions/no-debug-zts-20190902/mbstring.so.so (/usr/local/php7/lib/php/extensions/no-debug-zts-20190902/mbstring.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
Эти файлы могут быть расположены там, а каталог находится в переменной среды PATH:
$ echo $PATH
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/centos/.local/bin:/home/centos/bin:/usr/local/php7/bin:/home/centos/cmake-3.16.0-Linux-x86_64/bin:/home/centos/libzip-1.6.1/build/lib/:/home/centos/libzip-1.6.1/lib/:/usr/lib:/usr/lib/:/usr/include/:/usr/local/php7/lib/php/extensions/no-debug-zts-20190902/
Плюс также возможно, что php не могу загрузить эти модули, потому что это модули NTS.
Так что, если есть кто-нибудь, кто скомпилировал php с этими расширениями ранее, я мог бы использовать некоторую помощь. Спасибо!