(为清晰起见编辑 - 滚动接受答案)
Libsodium已经为PHP 7做好了准备。在此过程中,删除了名称空间,并添加了钠的前缀和方法的SODIUM_和常量的SODIUM_。此外,还删除了版本方法。
此github页面记录了所有新函数和常量,该项目提供了与\ Sodium命名空间的向后兼容性:https://github.com/Firehed/sodium/blob/master/src/we_cant_have_nice_things.php
配方:在PHP 7和AWS AMI上安装Libsodium
# PHP 7.0 Libsodium install AWS AMI
yum install -y php7-pear re2c php70-devel
yum groupinstall -y "Development Tools"
pecl7 install libsodium
vi /etc/php-7.0.d/20-libsodium.ini
; Enable libsodium extension module
extension=sodium.so
service httpd restart
命令行测试验证钠已安装
php7 --info | grep sodium
测试php函数以验证密码哈希的调用模式
<?php
$password = "hello";
$hash_str = sodium_crypto_pwhash_str(
$password,
\SODIUM_CRYPTO_PWHASH_OPSLIMIT_INTERACTIVE,
\SODIUM_CRYPTO_PWHASH_MEMLIMIT_INTERACTIVE
);
var_dump($password, $hash_str);
感谢@GracefulRestart的帮助。
答案 0 :(得分:1)
我在这里看到一些问题,第一个问题是您的测试文件似乎无法正常运行。
使用在PHP 7中运行的libsodium运行测试代码会返回以下错误:
PHP Fatal error: Uncaught Error: Call to undefined function Sodium\\library_version_major()
如果要检查版本,可能更容易从phpinfo()函数中搜索数据:
<?php phpinfo(); ?>
# or from CLI
php7 --info |grep sodium
我注意到的另一个问题是在安装步骤中,您从源代码和PECL安装libsodium。默认情况下,make install
命令将库放在/ usr / local / lib中,而pecl7 install libsodium
通常会将库安装到默认的PHP模块目录中。
如果您尝试从源代码安装,则/etc/php-7.0.d/20-libsodium.ini文件不正确,因为它正在加载您从PECL安装的libsodium库(您可以检查它正在加载哪个目录通过从phpinfo()检查extension_dir ini设置。
如果您只需要从PECL安装,则不需要所有开发包或任何手动编译。
编辑我修改了您发布的配方,以删除下载源代码的无关步骤,并使用PECL完成所有操作:
yum install -y php7-pear re2c php70-devel
yum groupinstall -y "Development Tools"
# PHP 7.0
pecl7 install libsodium
vi /etc/php-7.0.d/20-libsodium.ini
; Enable libsodium extension module
extension=sodium.so
service httpd restart
如果您的发行版的YUM存储库提供了php7-libsodium软件包,那将是一个更小的配方
希望有所帮助
答案 1 :(得分:0)
这是我对这个食谱的解决方法。
wget -c https://download.libsodium.org/libsodium/releases/libsodium-1.0.18.tar.gz
tar -xvf libsodium-1.0.18.tar.gz
cd libsodium-1.0.18
./configure
make && make check
make install
sudo pecl7 install -f libsodium
pecl7应该安装并修改php.ini文件,使其在php.ini中包含以下内容
extension="sodium.so"
如果在Elastic Beanstalk中运行PHP,则以下文件./ebextentions/script.config:
files:
"/opt/elasticbeanstalk/hooks/appdeploy/pre/001_libsodium.sh":
mode: "000755"
owner: root
group: root
content: |
#!/usr/bin/env bash
wget -c https://download.libsodium.org/libsodium/releases/libsodium-1.0.18.tar.gz && tar -xvf libsodium-1.0.18.tar.gz && cd libsodium-1.0.18 && ./configure && make && make check && sudo make install && sudo pecl7 install -f libsodium