root@ip-184-168-122-73:/opt/lampp/logs# more php_error_log
[24-Jan-2025 10:25:55 UTC] PHP Warning: PHP Startup: Invalid library (maybe not a PHP library) 'libsodium.so' in Unknown on line 0
[24-Jan-2025 10:25:59 UTC] PHP Warning: PHP Startup: Invalid library (maybe not a PHP library) 'libsodium.so' in Unknown on line 0

/opt/lampp/bin/php -m | grep sod
Warning: PHP Startup: Invalid library (maybe not a PHP library) 'libsodium.so' in Unknown on line 0

root@ip-184-168-122-73:~/raj/php-8.2.4/php-8.2.4/ext/sodium# make
/bin/bash /root/raj/php-8.2.4/php-8.2.4/ext/sodium/libtool --mode=compile cc -I/usr/include/libsodium -Wno-type-limits -Wno-logical-op -I. -I/root/raj/php-8.2.4/php-8.2.4/ext/sodium -DPHP_ATOM_INC -I/root/raj/php-8.2.4/php-8.2.4/ext/sodium/include -I/root/raj/php-8.2.4/php-8.2.4/ext/sodium/main -I/root/raj/php-8.2.4/php-8.2.4/ext/sodium -I/usr/include/php/20190902 -I/usr/include/php/20190902/main -I/usr/include/php/20190902/TSRM -I/usr/include/php/20190902/Zend -I/usr/include/php/20190902/ext -I/usr/include/php/20190902/ext/date/lib -I/usr/include/libsodium  -DHAVE_CONFIG_H  -g -O2   -c /root/raj/php-8.2.4/php-8.2.4/ext/sodium/libsodium.c -o libsodium.lo
mkdir .libs
 cc -I/usr/include/libsodium -Wno-type-limits -Wno-logical-op -I. -I/root/raj/php-8.2.4/php-8.2.4/ext/sodium -DPHP_ATOM_INC -I/root/raj/php-8.2.4/php-8.2.4/ext/sodium/include -I/root/raj/php-8.2.4/php-8.2.4/ext/sodium/main -I/root/raj/php-8.2.4/php-8.2.4/ext/sodium -I/usr/include/php/20190902 -I/usr/include/php/20190902/main -I/usr/include/php/20190902/TSRM -I/usr/include/php/20190902/Zend -I/usr/include/php/20190902/ext -I/usr/include/php/20190902/ext/date/lib -I/usr/include/libsodium -DHAVE_CONFIG_H -g -O2 -c /root/raj/php-8.2.4/php-8.2.4/ext/sodium/libsodium.c  -fPIC -DPIC -o .libs/libsodium.o
/root/raj/php-8.2.4/php-8.2.4/ext/sodium/libsodium.c:25:10: fatal error: zend_attributes.h: No such file or directory
   25 | #include "zend_attributes.h"
      |          ^~~~~~~~~~~~~~~~~~~
compilation terminated.
make: *** [Makefile:192: libsodium.lo] Error 1

$ sudo apt-get install php-sodium

$ sudo apt-get install php-pear php-dev libsodium-dev

$ sudo apt-get install build-essential autoconf bison re2c libssl-dev libargon2-dev libsodium-dev

$ dpkg -l | grep libsodium-dev

$ /opt/lampp/bin/php -m | grep sod

ii libsodium-dev:amd64 1.0.18-1 amd64 Network communication, cryptography and signaturing library - headers
ii libsodium23:amd64 1.0.18-1 amd64 Network communication, cryptography and signaturing library
ii python3-nacl 1.3.0-5 amd64 Python bindings to libsodium (Python 3)

The installed Sodium libraries listed (libsodium-dev, libsodium23, and python3-nacl) are system-wide packages and are not the actual sodium.so PHP extension file required for XAMPP. Instead, you need the sodium.so file, which acts as a PHP extension. Here’s how to locate and copy the correct file:

$ dpkg-query -L libsodium-dev

$ sudo pecl install libsodium

$ find /usr -name sodium.so

$ find /usr -name sodium.so
/usr/lib/php/20190902/sodium.so

$ /opt/lampp/bin/php -i | grep extension_dir

cp /usr/lib/php/20190902/sodium.so /opt/lampp/lib/php/extensions/no-debug-non-zts-20220829

root@ip-184-168-122-73:/opt/lampp/lib/php/extensions/no-debug-non-zts-20220829# ldconfig -p | grep argon2
libargon2.so.1 (libc6,x86-64) => /lib/x86_64-linux-gnu/libargon2.so.1
libargon2.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libargon2.so
root@ip-184-168-122-73:/opt/lampp/lib/php/extensions/no-debug-non-zts-20220829# echo "/usr/lib/x86_64-linux-gnu" | sudo tee /etc/ld.so.conf.d/argon2.conf
/usr/lib/x86_64-linux-gnu
root@ip-184-168-122-73:/opt/lampp/lib/php/extensions/no-debug-non-zts-20220829# sudo ldconfig
root@ip-184-168-122-73:/opt/lampp/lib/php/extensions/no-debug-non-zts-20220829# ldconfig -p | grep argon2
libargon2.so.1 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libargon2.so.1
libargon2.so (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libargon2.so
root@ip-184-168-122-73:/opt/lampp/lib/php/extensions/no-debug-non-zts-20220829# ls -l /opt/lampp/lib/php/extensions/no-debug-non-zts-20220829/libsodium.so
-rwxr-xr-x 1 root root 468088 Jan 24 11:13 /opt/lampp/lib/php/extensions/no-debug-non-zts-20220829/libsodium.so
root@ip-184-168-122-73:/opt/lampp/lib/php/extensions/no-debug-non-zts-20220829# sudo /opt/lampp/lampp restart
Restarting XAMPP for Linux 7.4.1-1...
XAMPP: Stopping Apache...ok.
XAMPP: Stopping MySQL...ok.
XAMPP: Stopping ProFTPD...ok.
XAMPP: Starting Apache...ok.
XAMPP: Starting MySQL...ok.
XAMPP: Starting ProFTPD...ok.
root@ip-184-168-122-73:/opt/lampp/lib/php/extensions/no-debug-non-zts-20220829# /opt/lampp/bin/php -m | grep sodium
Warning: PHP Startup: Unable to load dynamic library 'libsodium.so' (tried: /opt/lampp/lib/php/extensions/no-debug-non-zts-20220829/libsodium.so (libargon2.so.0: cannot open shared object file: No such file or directory), /opt/lampp/lib/php/extensions/no-debug-non-zts-20220829/libsodium.so.so (/opt/lampp/lib/php/extensions/no-debug-non-zts-20220829/libsodium.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0

The error persists because PHP is specifically looking for libargon2.so.0, but your system has libargon2.so.1. The version mismatch can be resolved by creating a symbolic link to make libargon2.so.1 accessible as libargon2.so.0.

Here’s how to resolve this issue:


1. Create a Symbolic Link

  1. Verify the current location of libargon2.so.1:

       ls -l /usr/lib/x86_64-linux-gnu/libargon2.so.1
  2. Create a symbolic link named libargon2.so.0:

       sudo ln -s /usr/lib/x86_64-linux-gnu/libargon2.so.1 /usr/lib/x86_64-linux-gnu/libargon2.so.0
  3. Confirm the link:

       ls -l /usr/lib/x86_64-linux-gnu/libargon2.so.0

2. Refresh the Dynamic Linker

Update the linker cache to recognize the new symbolic link:

sudo ldconfig

Verify that libargon2.so.0 is now available:

ldconfig -p | grep argon2

You should see:

libargon2.so.0 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libargon2.so.0

3. Restart XAMPP

Restart XAMPP to reload PHP:

sudo /opt/lampp/lampp restart

4. Verify the Sodium Extension

Check if the libsodium extension is now loaded:

/opt/lampp/bin/php -m | grep sodium

Alternatively, test with a PHP script:

  1. Create a file test_sodium.php in your htdocs directory:

       <?php
       echo extension_loaded('sodium') ? "Sodium is enabled\n" : "Sodium is not enabled\n";
       ?>
  2. Access the file in your browser:

       http://localhost/test_sodium.php

Additional Notes

  • If the issue persists, double-check the PHP error log for additional errors:

      more /opt/lampp/logs/php_error_log
  • Ensure libsodium.so is correctly compiled for your PHP version (API 20220829).

Let me know if you need further assistance!