原文链接:https://blog.csdn.net/baidu_34418619/article/details/80335639?utm_source=blogxgwz5
**错误1 : XAMPP is currently only availably as 32 bit application. Please use a 32 bit compatibility library f**
继续往下看
安装32位运行环境:
>yum install -y glibc*i686
然后切换到lampp路径下,改写lampp的读写权限:
> chmod 777 lampp
如果觉得不安全,修改文件后可以改回来
然后,找到并编辑解压后的lampp文件,
sudo gedit /opt/lampp/lampp
并搜索“XAMPP is currently 32 bit only“引号里的那句话。用#号注释下面的判断环境的语句。
----------
然后,找到并编辑解压后的lampp文件,
sudo gedit /opt/lampp/lampp
并搜索“XAMPP is currently 32 bit only“引号里的那句话。用#号注释下面的判断环境的语句。
#case `uname -m` in
# *_64)
# if /opt/lampp/bin/php -v > /dev/null 2>&1
# then
# :
# else
# $de && echo "XAMPP gibt es zur Zeit nur als 32-Bit Applikation. Bitte verwende eine 32-Bit Kompatibilitaetsbibliothek fuer Dein System."
# $de || echo "XAMPP is currently only availably as 32 bit application. Please use a 32 bit compatibility library for your system."
# exit
# fi
# ;;
#esac
然后再重新执行。
**错误2:唯独mysql不会启动
执行:
> chown -R nobody.root /opt/lampp/var/mysql
**错误3:libnsl.so.1: cannot open shared object file: No such file or directory**
这个错误是最坑的,我百度谷歌了一下午加第二天一上午,把所有的错误原因,以及各种情况都考虑了才解决。敲开心。
原错误的情形是这样的:
[root@localhost lampp]# ./lampp start
Starting XAMPP for Linux 7.2.5-0...
XAMPP: Starting Apache...fail.
httpd: Syntax error on line 522 of /opt/lampp/etc/httpd.conf: Syntax error on line 10 of
/opt/lampp/etc/extra/httpd-xampp.conf: Cannot load /opt/lampp/modules/libphp7.so into
server: libnsl.so.1: cannot open shared object file: No such file or directory
XAMPP: Starting MySQL...already running.
XAMPP: Starting ProFTPD...already running.
只有apache运行错误,提示很长,意思是说在/opt/lampp/etc/httpd.conf这个文件中的第522行出现了异常。
然后开始寻找522行是什么,一看如下:
> Include etc/extra/httpd-xampp.conf
是调用了httpd-xampp.conf这个东西,然后继续看错误提示里面说在第10行里面没有发现libnsl.so.1这个东西。提示还说没有打开shared object file,分享对象文件???什么东东。。
百度后整理了一下思路
1: libnsl.so.1是一个共享的链接库,.so的好像都是这一类的文件
2: 提示说没有个这个文件
既然没有,就找一下吧。
find / -name libnsl*
这个命令不是很熟悉,毕竟才接触linux系统,所以也是赶鸭子上架,现学现卖。
然后出现:
[root@localhost /]# find / -name libnsl*
/usr/share/licenses/libnsl2
/usr/lib64/libnsl-2.27.so
/usr/lib64/libnsl.so.2
/usr/lib64/libnsl.so.2.0.0
/usr/lib64/libnsl.so.1
这一看,真的没有
然后就要下载了,也是几番搜索后,找到如何下载。
yum install libnsl.i686
下载之后,重新执行,依旧是不行,还是没有找到。继续上网查找原因。
学了一个命令,ldd,是查找文件执行调用哪些链接库的,如下:
[root@localhost modules]# ldd libphp7.so
linux-vdso.so.1 (0x00007ffdb63d3000)
libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007faa736b4000)
libcrypto.so.1.0.0 => /opt/lampp/lib/libcrypto.so.1.0.0 (0x00007faa73267000)
libssl.so.1.0.0 => /opt/lampp/lib/libssl.so.1.0.0 (0x00007faa72ff5000)
libz.so.1 => /opt/lampp/lib/libz.so.1 (0x00007faa72ddc000)
libexslt.so.0 => /opt/lampp/lib/libexslt.so.0 (0x00007faa72bc8000)
libresolv.so.2 => /lib64/libresolv.so.2 (0x00007faa729b1000)
librt.so.1 => /lib64/librt.so.1 (0x00007faa727a9000)
libpq.so.5 => /opt/lampp/lib/libpq.so.5 (0x00007faa7257b000)
libldap-2.4.so.2 => /opt/lampp/lib/libldap-2.4.so.2 (0x00007faa72334000)
liblber-2.4.so.2 => /opt/lampp/lib/liblber-2.4.so.2 (0x00007faa72125000)
libstdc++.so.6 => /opt/lampp/lib/libstdc++.so.6 (0x00007faa71e1c000)
libpng15.so.15 => /opt/lampp/lib/libpng15.so.15 (0x00007faa71bec000)
libjpeg.so.8 => /opt/lampp/lib/libjpeg.so.8 (0x00007faa719a5000)
libgdbm.so.3 => /opt/lampp/lib/libgdbm.so.3 (0x00007faa7179e000)
libbz2.so => /opt/lampp/lib/libbz2.so (0x00007faa7158e000)
libsqlite3.so.0 => /opt/lampp/lib/libsqlite3.so.0 (0x00007faa712a5000)
libm.so.6 => /lib64/libm.so.6 (0x00007faa70f11000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007faa70d0d000)
libnsl.so.1 => not found
libcurl.so.4 => /opt/lampp/lib/libcurl.so.4 (0x00007faa70a97000)
libfreetype.so.6 => /opt/lampp/lib/libfreetype.so.6 (0x00007faa707f6000)
libicui18n.so.48 => /opt/lampp/lib/libicui18n.so.48 (0x00007faa7040a000)
libicuuc.so.48 => /opt/lampp/lib/libicuuc.so.48 (0x00007faa7007c000)
libicudata.so.48 => /opt/lampp/lib/libicudata.so.48 (0x00007faa6ed0d000)
libicuio.so.48 => /opt/lampp/lib/libicuio.so.48 (0x00007faa6eaff000)
libxslt.so.1 => /opt/lampp/lib/libxslt.so.1 (0x00007faa6e8b8000)
libxml2.so.2 => /opt/lampp/lib/libxml2.so.2 (0x00007faa6e4e3000)
libiconv.so.2 => /opt/lampp/lib/libiconv.so.2 (0x00007faa6e1fa000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007faa6dfe2000)
libc.so.6 => /lib64/libc.so.6 (0x00007faa6dc23000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007faa6da04000)
/lib64/ld-linux-x86-64.so.2 (0x00007faa74b6f000)
一看,在libnsl.so.1,果然没有发现。我明明已经下载了,为什么没有发现呢?难道没有配置或是连接?
然后看了很多博客,ln了多个链接,软的硬的都没有用。
后来想,是不是32位和64位的问题,因为我用的是32位的运行库,会不会是那个库是64位的,所以不生效?
然后我查看文件属性,是32位的,没问题,而且也链接了。后来我突发奇想一个硬链接到lib64下。结果发现错误提示变了:
[root@localhost lampp]# ./lampp start
Starting XAMPP for Linux 7.2.5-0...
XAMPP: Starting Apache...fail.
httpd: Syntax error on line 522 of /opt/lampp/etc/httpd.conf: Syntax error on line 10 of
/opt/lampp/etc/extra/httpd-xampp.conf: Cannot load /opt/lampp/modules/libphp7.so into
server: libnsl.so.1: wrong ELF class: ELFCLASS32
到了这里很激动,修改了很多文件,加了很多链接都没有变化的,终于变了。
提示说是错误执行,32位的。。?然后又回头看了动态链接的其他库,才发现,竟然都是64位的,所以我应该下载64位的?
yum install libnsl.x86_64
安装完后,再执行start,果然成功了!!!!敲开心。
总结一下学到的命令
find / -name libnsl* #模糊查询
ldd libphp7.so #查看动态链接库
ln /lib/libnsl.so.1 /usr/lib #添加软/硬链接
ldconfig -p|grep libnsl #系统获取动态链接库,正常情况如下:
[root@localhost /]# ldconfig -p|grep libnsl
libnsl.so.2 (libc6,x86-64) => /lib64/libnsl.so.2
libnsl.so.1 (libc6, OS ABI: Linux 3.2.0) => /usr/lib/libnsl.so.1
yum search libnsl #查询安装包