Здравствуйте, я пытаюсь развернуть веб-сервер интрасети у себя дома, поэтому я установил centOS на машину вместе с apache, php7.2 и mysql.Тем не менее, мое php-приложение зависит от libsodium для шифрования данных, поэтому я запустил sudo yum install php-pecl-libsodium
, а затем sudo pecl install libsodium
для установки libsodium, после чего я добавил extension=libsodium.so
в конец файла php.ini, и он, кажется, работалphpinfo()
выглядит следующим образом:
Однако при попытке загрузить приложение возникает эта ошибка:
Warning: Use of undefined constant SODIUM_CRYPTO_SECRETBOX_KEYBYTES - assumed 'SODIUM_CRYPTO_SECRETBOX_KEYBYTES' (this will throw an Error in a future version of PHP) in /var/www/html/stm_asc/controller/database/MySQL_DataMapper.php on line 38
Fatal error: Uncaught TypeError: random_bytes() expects parameter 1 to be integer, string given in /var/www/html/stm_asc/controller/database/MySQL_DataMapper.php:38 Stack trace: #0 /var/www/html/stm_asc/controller/database/MySQL_DataMapper.php(38): random_bytes('SODIUM_CRYPTO_S...') #1 /var/www/html/stm_asc/controller/database/MySQL_DataMapper.php(56): asc\MySQL_DataMapper->__construct() #2 /var/www/html/stm_asc/views/login.php(11): asc\MySQL_DataMapper::getInstance() #3 {main} thrown in /var/www/html/stm_asc/controller/database/MySQL_DataMapper.php on line 38
Вот MySQL_DataMapper.php в строке 38:
Так что, похоже, макрос SODIUM_CRYPTO_SECRETBOX_KEYBYTES
не загружается, я знаю, что этот код работает, потому что онработает на машине, на которой я разработал систему, и это задокументировано как здесь .Так что это какая-то проблема конфигурации для этой новой системы, может быть, мне не хватает другой библиотеки, которую я не помню?Спасибо.