Ошибка при установке libsodium в PHP 7.1

Я использую PHP 7.1.25, а mcrypt - это текущее используемое расширение, а mcrypt будет устаревшим в PHP 7.2, а Libsodium будет добавлен к основным расширениям в PHP 7.2.

Теперь мне нужно попробовать установить libsodium в PHP 7.1 и посмотреть, как это работает. Следуйте этому https://lukasmestan.com/install-libsodium-extension-in-php7, но установка не удалась. Также обновлен пакет PECL. См. Ошибку ниже!

Любая помощь будет очень признательна. Заранее благодарим!

$ sudo pecl install -f libsodium
downloading libsodium-2.0.20.tgz ...
Starting to download libsodium-2.0.20.tgz (28,504 bytes)
.........done: 28,504 bytes
4 source files, building
running: phpize
Configuring for:
PHP Api Version:         20160303
Zend Module Api No:      20160303
Zend Extension Api No:   320160303
building in /tmp/pear/temp/pear-build-rootsL5uMO/libsodium-2.0.20
running: /tmp/pear/temp/libsodium/configure --with-php-config=/usr/bin/php-config
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for a sed that does not truncate output... /bin/sed
checking for cc... cc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether cc accepts -g... yes
checking for cc option to accept ISO C89... none needed
checking how to run the C preprocessor... cc -E
checking for icc... no
checking for suncc... no
checking whether cc understands -c and -o together... yes
checking for system library directory... lib
checking if compiler supports -R... no
checking if compiler supports -Wl,-rpath,... yes
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking target system type... x86_64-pc-linux-gnu
checking for PHP prefix... /usr
checking for PHP includes... -I/usr/include/php/20160303 -I/usr/include/php/20160303/main -I/usr/include/php/20160303/TSRM -I/usr/include/php/20160303/Zend -I/usr/include/php/20160303/ext -I/usr/include/php/20160303/ext/date/lib
checking for PHP extension directory... /usr/lib/php/20160303
checking for PHP installed headers prefix... /usr/include/php/20160303
checking if debug is enabled... no
checking if zts is enabled... no
checking for re2c... no
configure: WARNING: You will need re2c 0.13.4 or later if you want to regenerate PHP parsers.
checking for gawk... gawk
checking for sodium support... yes, shared
checking for pkg-config... no
checking for libsodium... configure: error: Please install libsodium - See https://github.com/jedisct1/libsodium
ERROR: `/tmp/pear/temp/libsodium/configure --with-php-config=/usr/bin/php-config' failed

person VenkateshLB    schedule 26.12.2018    source источник
comment
configure: error: Пожалуйста, установите libsodium - см. github.com/jedisct1/libsodium выглядит довольно просто, но вы не Я не говорю об этом. Вы установили библиотеку, но система сборки расширений не может ее найти? Вы спрашиваете, как установить библиотеку?   -  person Álvaro González    schedule 26.12.2018
comment
Попробуйте эту альтернативу openssl_encrypt stackoverflow.com / questions / 41272257 /   -  person Sachin    schedule 26.12.2018
comment
Спасибо за комментарий. Я не понимаю, как установить библиотеку согласно lukasmestan.com/install-libsodium-extension- in-php7. Нужны инструкции по установке библиотеки и ее настройке   -  person VenkateshLB    schedule 26.12.2018


Ответы (3)


@VenkateshLB Сначала вы должны установить libsodium, предоставляемую вашим дистрибутивом Linux.

CentOS 7:

yum install libsodium libsodium-devel

Ubuntu 18.04:

apt install libsodium libsodium-dev

После установки выполните команду PECL.

person Mondane    schedule 01.07.2019
comment
Мне нужно было запустить sudo apt install libsodium-dev, а затем sudo pecl install libsodium, а затем он сказал мне: «Вы должны добавить extension =odium.so в php.ini». - person Ryan; 23.08.2019
comment
@Ryan, ваш комментарий должен быть правильным ответом, спасибо! - person Jared Chu; 08.03.2020
comment
Предложение @Ryan сработало. Он также работал с версией brew [email protected]. - person Leo Fisher; 20.09.2020
comment
@LeoFisher Рад, что это помогло. Я преобразовал свой комментарий в ответ здесь, если вы хотите проголосовать за него: stackoverflow.com/a/63980750/470749 - person Ryan; 20.09.2020
comment
@JaredChu Рад, что это помогло. Я преобразовал свой комментарий в ответ здесь, если вы хотите проголосовать за него: stackoverflow.com/a/63980750/470749 - person Ryan; 20.09.2020

У меня это не сработало (Ubuntu 16.04) (чтобы $ pecl install -f libsodium заработал):

$ apt install libsodium libsodium-dev

Вот такая ошибка:

Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package libsodium

Вместо этого работала загрузка libsodium вручную и ее компиляция:

Скачайте исходный код libsodium и распакуйте

$ wget https://download.libsodium.org/libsodium/releases/LATEST.tar.gz
$ tar -xzf LATEST.tar.gz

Скомпилируйте libsodium

$ cd libsodium-stable/
$ ./configure
$ make && make check
$ make install

См. https://libsodium.gitbook.io/doc/installation

После этого сработала установка libsodium через PECL:

$ pecl install -f libsodium

Устранение неполадок:

$ pecl install -f libsodium по-прежнему не работает

Проверьте, установлен ли PECL:

$ pecl version
PEAR Version: ...
PHP Version: ...
Zend Engine Version: ...
Running on: ...

Если вместо этого вы получите сообщение об ошибке, вам необходимо сначала установить PECL:

$ apt install php-pear

Проверьте, доступен ли phpize (для компиляции libsodium для PHP):

$ phpize --version
Configuring for:
PHP Api Version:         20160303
Zend Module Api No:      20160303
Zend Extension Api No:   320160303

Если вместо этого вы получите сообщение об ошибке, вам необходимо установить php7.1-dev:

$ apt install php7.1-dev

Как активировать натрий в PHP?

Вам нужно только создать файл натрия.ini в каталоге расширений PHP (возможно, в /etc/php/7.1/mods-available/).

Содержание:

extension=sodium.so

Вы можете активировать модуль через:

$ phpenmod -v 7.1 sodium

(Деактивацию можно выполнить с помощью phpdismod -v 7.1 sodium.)

Теперь phpinfo должен отобразить этот модуль:

$ php -i | grep sodium
/etc/php/7.1/cli/conf.d/20-sodium.ini,
sodium
sodium support => enabled
sodium compiled version => 2.0.20
libsodium headers version => 1.0.18
libsodium library version => 1.0.18
person KatharinaSt    schedule 27.08.2019
comment
Я все-таки ожидал строчки sodium compiled version => 2.0.20! И моя конфигурация включена в apache2, так что правильный путь /etc/php/7.4/mods-available/ или /etc/php/7.4/apache2/conf.d/? - person Meloman; 07.08.2020

Меняю свой комментарий на ответ, поскольку он помог многим людям:

Мне нужно было запустить sudo apt install libsodium-dev, а затем sudo pecl install libsodium, а затем он сказал мне: «Вы должны добавить extension =odium.so в php.ini».

person Ryan    schedule 20.09.2020