$./nginx 或者 /usr/local/nginx/sbin/nginx 来启动nginx,会报如下错:
./nginx: error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory
下面一步步解析:
If you are getting above error while starting nginx, you can fix by following.
This generally happens due to following three reasons.
- You don’t have PCRE installed
- Nginx was not complied & installed using pcre
- PCRE library is not set in LD_LIBRARY_PATH
There are multiple ways to fix this issue. The best way I believe is using troubleshooting skills. Let’s understand the error and fix it accordingly.
nginx: error while loading shared libraries: libpcre.so.1
nginx is looking for file libpcre.so.1 which comes under PCRE library and usually installed on UNIX.
- Let’s find libpcre.so.1 using find command
$find / -name libpcre.so.1 /usr/local/lib/libpcre.so.1 $
Ok, so I do have this file which means PCRE is already installed and will proceed with next troubleshooting step.
Note: If you don’t get find results then you got to install PCRE. You can either install using yum install pcre on Linux/CentOS or can ask system administrator to install it.
- Now, let’s set LD_LIBRARY_PATH as we could see libpcre.so.1 is available under /usr/local/lib
$export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
[root@localhost lib]# /usr/local/nginx/sbin/nginx
[root@localhost lib]# ps -ef |grep nginxroot 9539 1 0 19:06 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginxwww 9540 9539 0 19:06 ? 00:00:00 nginx: worker process
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH 和/usr/local/nginx/sbin/nginx 才行。否则,会没有权限。