Sometimes, Nginx users report that they end up with this error while trying to start Nginx. Nginx is open-source software for web serving, reverse proxying, caching, load balancing, media streaming, and so on.
This error happens when libpcre.so.1 which comes under the PCRE library is missing.
In this context, we shall look into how to fix this Nginx error.
When this error happens, you will see a message such as this:
Starting nginx: /opt/nginx/sbin/nginx: error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory
The Nginx executable was compiled to expect the PCRE (Perl-compatible Regular Expression) shared library to be available somewhere on LD_LIBRARY_PATH or specified in /etc/ld.so.conf or whatever equivalent library-locating mechanisms apply to our operating system and it cannot find the library.
Main Causes of the error 'Nginx error while loading shared libraries':
1. PCRE library not available
2. Nginx compiled installation did not specify the correct PCRE address
3. Did not add PCRE library to LD_LIBRARY_PATH
To fix this error we simply need to install PCRE.
Nginx is looking for a file libpcre.so.1 which comes under the PCRE library and usually installed on UNIX.
We can find libpcre.so.1 using the following find command:
$find / -name libpcre.so.1
If this file is present, it means that PCRE is already installed.
In case, if we do not get find results, we will have to install PCRE using the following command:
$ yum install pcre
Now, we have to set LD_LIBRARY_PATH, as we could see libpcre.so.1 is available under /usr/local/lib.
Start Nginx using either of the following commands:
$ sudo systemctl start nginx or sudo service nginx start
If Nginx does not specify the correct PCRE address, we need to recompile and install Nginx and specify PCRE.
We do this using the following commands:
$ ./configure –prefix=/usr/local/nginx –with-pcre=../pcre-8.38
$ sudo make install