Компиляция PHP с модулями mbstring и zip - PullRequest
0 голосов
/ 05 марта 2020

сентос 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 с этими расширениями ранее, я мог бы использовать некоторую помощь. Спасибо!

1 Ответ

0 голосов
/ 11 марта 2020

Хорошо, я узнал, что я делаю не так. Проблема заключалась в том, что я скопировал первую сборку в каталог пути, и каждый раз, когда я выполнял php, он выполнял оттуда php вместо версии fre sh.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...