ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

Linux下XAMPP完整安装配置指南:从环境准备到服务管理实战

Linux下XAMPP完整安装配置指南:从环境准备到服务管理实战 1. 先把XAMPP是什么说清楚做Web开发的人应该都听过XAMPP这个名字它就是Apache MySQL/MariaDB PHP Perl这几种技术的合体名字本身就是交叉组合来的X代表跨平台A是ApacheM是MySQL现在多指MariaDB两个P分别是PHP和Perl。它最大的价值在于把一套完整的Web运行环境打包成一个整体装完之后不需要再去分别安装、配置Apache和MySQL开箱即用尤其适合做本地开发、学习测试、快速搭环境这类场景。这也就是为什么不管是从零开始学PHP的人还是需要跑WordPress、Laravel、ThinkPHP这类项目的开发者甚至是想在本地快速搭一套LAMP环境做实验的运维都会把它当作首选方案。你不需要手动改一堆.conf文件、配置用户权限、解决依赖冲突xampp安装包一口气把这些全部搞定。这次要聊的是 xampplinux_v174beta11 这个版本在Linux下的完整安装与配置过程一个基于社区持续更新的XAMPP Linux发行版本整体使用体验和官方版本基本一致但在安装包结构、部分默认参数上做了一些调整本文会基于实际安装过程做完整记录。很多人一提到Linux下的Web环境第一反应是apt install或者yum install装个nginxphp-fpmmysql觉得这才是生产标准。这个思路没错但如果你只是想快速搭一个开发环境、跑通一个项目demo用系统包管理一个个装还需要处理软件源、版本依赖、PHP扩展、Apache模块等一系列问题光排查依赖就能耗掉半天。XAMPP的优势恰恰是把这些复杂度尽量隐藏掉让你把精力集中在业务代码本身。这篇文章适合的人群主要有三类第一刚开始接触Linux的Web开发新手想在本地快速跑起PHP程序第二需要在不同机器上快速复用同一套Web环境的开发者第三不想在生产环境上折腾但需要一个靠谱本地测试环境的人。我会把安装过程中的每一个关键步骤、常见报错、以及我自己踩过的坑尽量写清楚确保你照着操作能跑通。1.1 为什么在Linux下用XAMPP而非其他方案我知道很多人会问Linux下面明明可以直接用docker为什么还要用XAMPP这问题很实际。Docker本身也是一个好方案但要求你对容器、镜像、数据卷、网络模式这些概念有基本了解。XAMPP更像是一台“傻瓜式一体化咖啡机”——按一个键就能出咖啡不需要你自己去磨豆、调水温、控制萃取时间。而Docker更像是一套专业的手冲装备上限更高但学习成本也更高。XAMPP在Linux下还有一个实打实的优势它把Apache、MySQL、PHP都放在同一个安装目录里统一管理。启动、停止、重启服务只需要一个命令/opt/lampp/lampp start不像系统级安装那样需要分别管理httpd、mysqld、php-fpm这几个不同的服务。再加上它默认的配置已经针对大多数开发场景做过优化做一些本地开发测试完全够用。当然XAMPP也有它的局限性比如不建议直接在生产环境使用默认配置没有做太多安全加固。但这恰恰是它的定位开发、测试、学习。让它专注做好这件事就够了。1.2 这个版本有什么值得关注的地方xampplinux_v174beta11在版本上属于XAMPP的迭代版本整体组件构成包括Apache、MariaDB、PHP、Perl并且自带phpMyAdmin。相比更早的版本这个版本在PHP版本上有明显升级对现代PHP框架的兼容性更好同时MariaDB也会相应更新。如果之前你已经安装了其他版本的XAMPP需要先确认一下版本间的数据目录结构是否有差异避免新版本启动后找不到原数据库。在后续章节中我会单独说明如何避免这个问题。2. 安装前的准备与版本确认你可能觉得安装一个软件还要做什么准备直接下载解压不就行了。但Linux装XAMPP和Windows不一样它涉及到执行权限、目录归属、端口占用、甚至glibc版本兼容性。有几次我在别人的机器上装没提前检查端口占用结果Apache死活起不来排查了半天才发现是系统自带的httpd占用了80端口。这类问题其实提前花两分钟就能避免。2.1 系统环境要求与检查清单如果按照官方文档的要求基础建议是2GB以上内存预留10GB左右的磁盘空间。实际使用中如果你的项目比较大、PHP进程开得多内存建议还是给到4GB以上。磁盘方面主要是数据库文件和日志文件占空间10GB目前来看是够用的但如果打算跑多个大型项目还是建议预留更多。操作系统的要求大致如下检查项最低要求推荐配置检查命令Linux发行版任意主流发行版Ubuntu、Debian、CentOS、Fedora等Ubuntu 20.04及以上cat /etc/os-release架构x86_64或ARM64x86_64uname -m内存1GB2GB以上free -h磁盘空间5GB10GB以上df -hglibc版本2.17以上越高越好ldd --versionglibc这块容易被人忽略尤其是用老版本CentOS的。如果glibc版本过低XAMPP启动的时候会出现类似libc.so.6: version GLIBC_2.18 not found这样的报错。遇到这种问题最好的办法就是升级系统或者换一个兼容的发行版自己编译一个新版glibc往往得不偿失。2.2 确认自己的Linux发行版与架构这一步看上去简单但确实有人会搞错。比如说Ubuntu也分22.04、20.04架构分x86_64、aarch64下载的安装包如果不匹配安装过程就报错或者根本运行不了。在终端输入以下命令确认系统类型和架构cat /etc/os-release uname -a lscpu | grep Architecture拿我常用的Ubuntu 22.04 LTS举例执行cat /etc/os-release后会看到类似“VERSION_ID22.04”的字样uname -m输出的是x86_64。这套组合就可以放心下载x64版本的XAMPP。如果你用的是树莓派这类ARM设备则要下载ARM版不过目前这个版本的ARM支持度不如x64那么完善安装前建议先看一下官方发布说明。还有一个另类情况Windows子系统(WSL)环境。之前有人问过我说在WSL里能不能装XAMPP答案是可以但WSL1和WSL2又不太一样。WSL2因为基于轻量级虚拟机兼容性更好但XAMPP的图形界面管理工具用不了只能靠命令行管理。如果你主要用命令行操作WSL2里装XAMPP是完全可行的。2.3 端口占用与依赖组件检查XAMPP默认的三大服务端口是固定的Apache占用80和443MySQL/MariaDB占用3306FTP占用21。安装前一定要检查这些端口是否被其他服务占用特别是3306因为有不少人会先在系统里装一个独立的MySQL或MariaDB再装XAMPP这样肯定起冲突。检查端口占用可以使用以下命令sudo lsof -i :80 -i :443 -i :3306 -i :21如果端口被占用lsof的输出结果中会显示占用进程的名称和PID。如果你确认该系统上没有其他Web服务可以先将它们停掉或者直接卸载然后再继续安装。如果想保留原来的服务也可以在XAMPP配置文件里把端口改成其他值比如把Apache的80改成8080、MySQL的3306改成3307。具体改法在第5章配置部分会详细说明。除了端口占用还需要确认系统中是否缺少XAMPP运行时依赖的库。虽然XAMPP大部分依赖都是自带的但glibc是例外这个库无法静态打包只能用系统的。所以当你的Linux版本过老、glibc过旧时XAMPP会直接拒绝启动。检查方式就是执行上面提到的ldd --version只要能看到2.17或更高版本基本就没问题。还有一个依赖是关于图形界面的XAMPP的manager图形面板需要GTK库支持如果是在纯命令行服务器环境没有安装图形库也不要紧用命令行的lampp脚本操作即可。3. 下载安装与目录结构准备阶段完成之后就进入正式安装环节了。这里我走的是命令行方式整个下载安装流程走完耗时一般不超过10分钟前提是网络状况正常。如果你的服务器在国外的机房或者本地网络访问GitHub、SourceForge等站点有延迟下载速度可能会比较慢可以考虑配置代理或者选择其他下载源。3.1 官方下载与镜像加速获取XAMPP安装包主要有两种方式。一种是通过官方页面选择Linux版本下载另一种是直接在终端用wget或curl下载。命令行方式更适合服务器环境或者你有一台远程机器不方便打开浏览器下载的情况。具体下载地址需要按系统中的需求获取这里提供一个通用的下载示例执行前建议先到官网页面上确认当前最新版本的下载链接不同版本的链接会略有差异wget https://sourceforge.net/projects/xampp/files/XAMPP%20Linux/xampp-linux-x64-8.2.12-0-installer.run需要注意一下文件名里有x64字样表示这是64位版本。如果你确认了系统架构是aarch64ARM64则需要找对应的ARM版本。下载完成后可以顺手检查一下文件大小是否合理如果下载到的是一个几KB的HTML文件那大概率是下载链接有问题错过了一个需要跳转的真实地址。下载完成后对所有下载的.run安装文件需要先赋予执行权限才能执行。这一步很基础但如果不做你可能会看到一句错误提示“Permission denied”。chmod x xampp-linux-x64-8.2.12-0-installer.run这个.run文件本质上是一个自解压安装包当你执行它的时候会自动解压并启动安装引导界面。如果你是在有图形界面的Linux系统上安装会弹出一个图形安装向导点击“Next”到底就可以了。但如果你的服务器没有图形环境比如纯命令行模式或者你通过SSH远程连接执行反而更适合用命令行模式。3.2 命令行模式安装实操命令行安装也不复杂。第一步还是赋予执行权限第二步直接执行安装脚本sudo ./xampp-linux-x64-8.2.12-0-installer.run加上sudo的原因在于XAMPP默认安装目录是/opt/lampp这个目录归属于root用户普通用户没有写权限。如果不用sudo安装过程大概率会报没有权限创建目录。除非你打算把XAMPP安装到用户目录下但这样又需要额外配置端口和权限不值当。执行之后程序会进入安装引导状态。在没有图形界面的终端中你可能会看到文本交互界面也可能看到“Launch the XAMPP?”之类的问题。按提示选择默认选项即可安装路径保持默认的/opt/lampp安装类型里可以选择安装全部组件也就是Apache、MySQL、PHP、Perl、phpMyAdmin等都装。这里我想多说一句XAMPP使用的是.bz2压缩方式如果你的Linux环境里没有解压工具安装过程可能会失败。但一般主流的Linux发行版都自带了bzip2、tar等基础工具真遇到报错再说。安装到末尾的时候它会问你要不要现在启动XAMPP。如果你还没做好环境准备先不要启动等配置好再启动也不迟。3.3 安装完成后验证目录结构安装完成后/opt/lampp目录会自动创建。你可以用ls命令打开看看标准的XAMPP Linux目录结构大致是这样的/opt/lampp ├── bin # 可执行文件目录其中包含php、mysql等命令 ├── etc # 主配置文件目录 ├── htdocs # Web根目录默认情况下放置网站文件 ├── lib # 依赖库目录 ├── logs # 日志目录 ├── php # PHP运行相关目录 ├── mysql # MariaDB数据库文件目录 ├── phpmyadmin # phpMyAdmin目录 ├── manager # 图形管理工具相关目录 ├── lampp # 核心管理脚本 ├── properties.ini # 版本信息文件 ├── icons # 图标目录 └── uninstall # 卸载脚本真实展示时会有更多子目录不过上述这些是你作为开发者最常接触的。htdocs目录相当于Windows版里的htdocs你部署网站的代码就放这里面Apache默认会把它作为DocumentRoot。所以后续开发项目只需要把项目文件夹丢进htdocs浏览器打开localhost/项目名就能访问。如果安装的是XAMPP的最新版有可能看到目录结构稍有变化比如etc目录下的配置文件被拆分得更细致但大体的组织形态不会变。有一个比较特殊且容易忽略的点/opt/lampp本身是一个软链接symlink真实目录可能在/opt/lampp-x86_64之类的名字下。这个设计是为了后续做版本升级时新版本解压后直接将链接指向新目录不影响用户的使用路径。3.4 快速启动与关闭服务XAMPP的启动超级简单在终端直接运行sudo /opt/lampp/lampp start执行后它会把Apache、MariaDB、FTP等服务一起拉起来。如果一切正常你会看到类似“Starting XAMPP for Linux...”以及各服务状态OK的输出。在浏览器输入http://localhost如果能看到XAMPP的默认欢迎页面说明环境已经跑起来了。关闭就反过来sudo /opt/lampp/lampp stop有些时候只想起停某个服务比如只想重启Apache而不动数据库可以使用下面的命令sudo /opt/lampp/lampp restartapache它的restartapache / startmysql / stopmysql 等参数相当灵活省得每次都全部停掉再启动。后面我在章节4里面会专门展开来讲一下子命令的具体用法。4. 服务管理与端口冲突处理XAMPP启动容易但真正在日常使用中让人头疼的是服务冲突、端口被占用、启动顺序影响这类问题。这章我会把lampp命令的所有常见用法、端口如何改、以及不同场景下的服务管理方法详细说明。这里都是我在实际使用中反复验证过的照着做基本不会翻车。4.1 lampp基础命令速查表XAMPP的命令行管理工具是/opt/lampp/lampp它本质上是一个Shell脚本封装了服务调度的逻辑。除了start和stop还有其他常用参数。我整理了一个现成速查表建议直接保存命令作用sudo /opt/lampp/lampp start启动所有服务sudo /opt/lampp/lampp stop停止所有服务sudo /opt/lampp/lampp restart重启所有服务sudo /opt/lampp/lampp startapache仅启动Apachesudo /opt/lampp/lampp stopapache仅停止Apachesudo /opt/lampp/lampp restartapache重启Apachesudo /opt/lampp/lampp startmysql仅启动MariaDBsudo /opt/lampp/lampp stopmysql仅停止MariaDBsudo /opt/lampp/lampp restartmysql重启MariaDBsudo /opt/lampp/lampp status查看当前所有服务的运行状态sudo /opt/lampp/lampp php运行PHP代码无需Web服务sudo /opt/lampp/lampp oci8启用或禁用OCI8扩展刚开始用的时候我看到status这个参数觉得很鸡肋后来发现排查问题时它比ps命令直观得多一眼就能看清Apache、MariaDB、ProFTPD到底哪个服务在跑哪个挂了。4.2 端口被占用时的处理方案如果你在启动的时候看到类似下面的输出Starting XAMPP for Linux 8.2.12-0... XAMPP: Another web server is already running.这说明系统的80端口或者443端口已经被其他进程占用了。这种情况的常见诱因在2.3节说过要么是系统自带了apache2、nginx这类Web服务要么是你之前手动装过一个MySQL。最好的解决办法是先把原来占用端口的服务停掉然后再启动XAMPP比如Ubuntu上可以操作sudo systemctl stop apache2 sudo systemctl disable apache2 sudo systemctl stop mysql sudo systemctl disable mysqldisable参数是防止它开机自启再次占用端口。但有些服务你可能不想停比如机器上有个Nginx怎么都不能动这个时候可以从XAMPP侧来改端口。首先修改Apache的配置文件/opt/lampp/etc/httpd.conf找到下面一行Listen 80把它改成Listen 8080然后还需要修改同一目录下的httpd-ssl.conf把默认的443端口也改一下比如改成4433Listen 4433改完之后用sudo /opt/lampp/lampp restartapache让它生效。这样浏览器访问的时候就需要用http://localhost:8080而不是默认的80。MariaDB的3306端口同理在/opt/lampp/etc/my.cnf里可以修改端口。另外如果你需要修改phpMyAdmin所连接的数据库端口一定不要漏掉/opt/lampp/phpmyadmin/config.inc.php里的对应配置很多新手只改了my.cnf结果phpMyAdmin还是往3306连导致连接失败。4.3 开机自启配置可选如果你希望服务器重启之后XAMPP自动恢复运行可以借助systemd来实现。虽然XAMPP自带的安装包没有集成systemd单元但我们可以手动创建一个。在/etc/systemd/system/目录下新建一个名为xampp.service的文件[Unit] DescriptionXAMPP Control Script Afternetwork.target [Service] Typeforking ExecStart/opt/lampp/lampp start ExecStop/opt/lampp/lampp stop ExecReload/opt/lampp/lampp reload Userroot [Install] WantedBymulti-user.target保存后执行sudo systemctl daemon-reload sudo systemctl enable xampp.service sudo systemctl start xampp.service这样开机之后XAMPP就会自动启动。需要提醒的是Typeforking很关键。因为lampp脚本会fork出多个后台进程systemd需要知道父进程何时完成启动。如果不写Typeforkingsystemd可能误判服务启动失败。如果你倾向于不使用systemd而是在rc.local里添加启动命令也行。但考虑到现在主流发行版基本都改用systemd了还是建议优先用上面这个方法。5. 核心配置与实战调优安装好、能启动只是第一步。真正在项目中跑起来还需要根据你的实际需求调整各种各样的配置项。这一章算是我踩过最多坑的地方也会重点展开。包括Apache的虚拟主机和URL重写、MariaDB的数据目录和密码策略、PHP的版本与扩展管理以及phpMyAdmin的访问限制等。5.1 Apache配置要点与虚拟主机Apache的主配置文件是/opt/lampp/etc/httpd.conf。打开它你会发现里面有很多Include指令XAMPP的目录结构让配置分散到多个文件中比如httpd-vhosts.conf、httpd-ssl.conf模块加载统一在modules/目录下。这种组织方式比把所有内容塞进一个文件容易维护得多。日常开发中最常用的配置就是虚拟主机。比如你在htdocs下建了一个叫myapp的目录想通过http://myapp.local来访问它而不想用http://localhost/myapp这种方式这时候就需要配置虚拟主机。先在/etc/hosts文件里加一行把域名映射到本机127.0.0.1 myapp.local然后编辑/opt/lampp/etc/extra/httpd-vhosts.conf在文件末尾增加VirtualHost *:80 ServerAdmin adminmyapp.local DocumentRoot /opt/lampp/htdocs/myapp ServerName myapp.local ErrorLog logs/myapp-error.log CustomLog logs/myapp-access.log common /VirtualHost保存后重启Apachesudo /opt/lampp/lampp restartapache再访问http://myapp.local就能直接打开项目。日常做多项目并行开发时这种方式和管理PATH_INFO方式相比要清爽得多。另外还有一个高频问题URL重写。现在大多数PHP框架Laravel、ThinkPHP6等都依赖Apache的mod_rewrite模块来实现路由解析。好在XAMPP默认已经启用了mod_rewrite你只需要确保虚拟主机配置中有下面这条设置Directory /opt/lampp/htdocs/myapp Options Indexes FollowSymLinks AllowOverride All Require all granted /Directory关键就是AllowOverride All它允许目录里的.htaccess文件覆盖全局配置。如果你去掉这个设置.htaccess里的RewriteRule会直接失效访问项目时就会出现404。5.2 MariaDB配置与账号密码修改数据库方面XAMPP自带的是MariaDB配置文件位于/opt/lampp/etc/my.cnf。主要关注的几个参数如下配置参数默认值说明port3306数据库服务端口max_connections150最大并发连接数innodb_buffer_pool_size16MInnoDB缓冲池大小max_allowed_packet16M允许的最大数据包如果你本机内存充裕建议把innodb_buffer_pool_size调大一些比如512M甚至1G对数据库密集型操作的性能提升比较明显。改完my.cnf之后记得重启MariaDB否则不会生效。XAMPP刚装好的时候MySQL的root用户是没有密码的任何人都可以无密码连接。本地开发倒是方便但如果端口暴露到公网就是一个巨大的安全漏洞。建议装完后立刻设置密码。XAMPP提供了专门脚本来处理安全问题sudo /opt/lampp/lampp security按提示依次为MySQL root用户设置密码、为phpMyAdmin设置密码认证、禁用FTP等。设置完成后如果你用phpMyAdmin连接就需要输入新的凭据。如果你用命令行连接/opt/lampp/bin/mysql -u root -p输入之前设置的密码即可。选择dark的场景再说一点由于XAMPP默认把数据目录放在/opt/lampp/mysql/data一旦你卸载XAMPP数据也会跟着没。所以如果做正式项目建议定期把整个数据目录备份下来或者把数据目录软链接到独立分区避免误删。5.3 PHP配置与扩展管理PHP的配置文件是/opt/lampp/etc/php.ini。里面比较常用到的几个配置项memory_limit脚本可占用的最大内存默认128M跑Composer或者大型脚本时不够可以调到256M或512M。upload_max_filesize上传文件大小上限默认2M做文件上传功能时经常需要调大比如调成20M。post_max_sizePOST数据大小上限最好大于upload_max_filesize。max_execution_time脚本最大执行时间默认30秒。如果要跑一个耗时较长的定时任务或数据批处理脚本这个值要相应调高。PHP扩展的动态加载可以通过编辑php.ini也可以在命令行下先查看当前加载了哪些扩展/opt/lampp/bin/php -m如果想要启用pdo_mysql、mysqli等常见扩展可以直接在php.ini里面找到对应的extensionpdo_mysql行去掉前面的分号注释即可。不过在新版XAMPP中考虑到稳定性通常PDO相关扩展已经默认启用了无需改动。还容易踩坑的地方是php.ini里的时区设置。默认时区可能是UTC如果你的项目需要取本地时间比如打印当前时间或者记录日志就会出现时间偏差。把这个参数改成本地时区例如date.timezone Asia/Shanghai改完之后重启Apache让PHP加载新配置。5.4 phpMyAdmin安全配置phpMyAdmin是一个基于Web的数据库管理工具XAMPP里已经集成了。默认情况下访问http://localhost/phpmyadmin可以免密登录仅凭root账号和空密码进入这在本地开发时很方便但在有公网IP的测试服务器上就是个隐患。可以在phpMyAdmin的配置文件/opt/lampp/phpmyadmin/config.inc.php中设置认证方式。将auth_type从cookie改成http是一种做法更稳妥的做法是给它加一层访问限制。如果需要经常做数据导入导出需要注意phpMyAdmin对上传文件大小的限制也受php.ini中upload_max_filesize的影响。导出一个超过40MB的SQL文件结果传了半天发现被限制了这种情况我遇到过不止一次。此时先把upload_max_filesize和post_max_size调大再处理MySQL的max_allowed_packet三者配合好才能顺畅完成大文件导入。6. 常见问题与排查记录不管安装哪个软件、如何细心配置总会遇到这样那样的坑。这一章我不讲理论直接分享我实践中最常遇到、也是网上讨论最多的问题排查过程。很多问题看上去千奇百怪其实背后都是同一两个原因。6.1 Apache无法启动的常见原因Apache起不来首先要看的日志文件是/opt/lampp/logs/error_log。打开日志文件看末尾会有直接线索。我遇到的最常见原因是端口被占用。这个前面已经说过不再多说。第二个常见原因是配置文件语法错误。改了httpd.conf或者虚拟主机配置之后一旦语法错误Apache服务也会拒绝启动。此时你可以在终端运行sudo /opt/lampp/lampp restartapache如果看到输出里面有“No listening sockets available”或“Address already in use”之类的内容说明端口占用无疑。如果提示“Syntax error”说明配置文件中有错误系统会把错误行的信息显示出来按提示修正即可。还有一个不常见但比较麻烦的问题Apache进程残留。比如你用lampp start启动了服务然后又手动kill掉了一些进程再次启动时POST会提示“Another web server is already running”但实际上你已经把进程杀掉了。这时候可以运行一下sudo /opt/lampp/lampp stop ps aux | grep httpd如果ps命令没有输出说明确实没有残留进程但XAMPP的PID文件可能还保留着。可用如下方式清理sudo rm -f /opt/lampp/var/mysql/*.pid sudo rm -f /opt/lampp/logs/httpd.pid然后再尝试启动。6.2 虚拟主机配置无效的问题虚拟主机配置看起来简单但还是有不少人说配了之后不生效域名访问还是跑到了默认的htdocs页面。出现这个情况大概率是因为httpd-vhosts.conf文件虽然有修改但主配置文件并没有把它加载进来。打开/opt/lampp/etc/httpd.conf找到下面这一行Include etc/extra/httpd-vhosts.conf确认它没有被注释掉。很多精简安装包会默认注释这个Include导致你改了vhosts文件却完全不生效。还有一个容易忽略的点改了/etc/hosts之后DNS缓存可能会干扰。如果浏览器访问题目里配置的本地域名跳到了别的地方尝试在浏览器无痕窗口里打开或者用curl测试一下curl http://myapp.local如果curl返回了正常页面但浏览器打不开那就是浏览器自身缓存的问题清除缓存就好了。6.3 数据库无法连接问题汇总数据库连接失败是另一个高频问题。常见报错有几种报错信息可能原因解决办法ERROR 2002 (HY000): Cant connect to local MySQL serverMariaDB没启动sudo /opt/lampp/lampp startmysqlERROR 1045 (28000): Access denied for user rootlocalhost密码错误或root密码为空用sudo /opt/lampp/lampp security重置密码ERROR 1698 (28000): Access denied for user rootlocalhost认证方式不匹配检查my.cnf中的auth_socket插件配置phpMyAdmin无法登录显示“Login without a password is forbidden”phpMyAdmin安全配置限制了空密码登录修改config.inc.php或通过安全脚本设置密码如果你用PHP程序连接数据库时报错但命令行mysql -u root -p可以正常进入那问题一般出现在PHP使用的连接参数上。确认数据库主机地址是localhost还是127.0.0.1两者在Linux下可能会走不同的连接方式socket vs TCP有时也会造成差异。6.4 常见问题速查表最后把一些容易踩的坑统一整理成速查表便于大家直接对照。问题描述常见原因解决方案安装时提示文件夹没有权限没有用root权限执行安装sudo执行安装脚本lampp start输出-Segmentation faultglibc版本过旧或架构不匹配检查系统版本升级系统或下载匹配架构的安装包PHP上传文件提示超过限制upload_max_filesize/post_max_size设置过小修改php.ini并重启ApachePHP代码修改后不生效PHP-FPM未重启或OPcache缓存运行sudo /opt/lampp/lampp restartapache清缓存phpMyAdmin页面报404目录缺失或Apache配置被改动检查/opt/lampp/phpmyadmin目录是否存在MySQL中文乱码数据库字符集设置问题在my.cnf中设置character-set-serverutf8mb4并重建数据表磁盘空间不足导致MariaDB写入失败日志文件过大清理/opt/lampp/logs目录旧日志设置日志轮转这张表里每一项我都实际遇到或处理过。尤其是中文乱码这个问题本地开发时最容易忽视等到上线前才发现一堆乱码数据。虽然MySQL默认在较新版本中也逐步默认使用utf8mb4但老项目仍可能存在历史遗留。建议在my.cnf中显式设置[client] default-character-setutf8mb4 [mysql] default-character-setutf8mb4 [mysqld] character-set-serverutf8mb4 collation-serverutf8mb4_general_ci改完重启MariaDB并且给新建的数据库指定utf8mb4字符集与排序规则。同时需要注意如果数据表已经存在还应当在数据库中执行ALTER TABLE语句来修改现有表的字符集否则新增数据和旧数据容易在排序查询时出问题。我个人的排查习惯是这样的遇到问题先看日志不要瞎猜。Apache有问题看/opt/lampp/logs/error_logPHP有问题看php_errors.log服务起不来用ps命令确认进程状态。很多时候网上搜到一堆答案其实都不如自己打开日志看一眼来得快。最后再分享一个配置过程中的小技巧XAMPP的PHP二进制文件在/opt/lampp/bin目录下如果你希望直接在终端中使用php和mysql命令而不想每次输入完整路径可以把该目录加入PATH环境变量。在~/.bashrc或~/.zshrc末尾追加export PATH/opt/lampp/bin:$PATH保存后执行source ~/.bashrc或重开终端之后就可以像平时使用系统自带命令一样直接执行php -v、mysql -u root -p等命令。不过这里有一个注意点PATH会被追加在末尾系统原有的php命令优先级更高如果系统中已存在其他版本PHP需要确认当前到底调用的是哪个。否则可能出现终端里php -v显示7.x但XAMPP的Apache实际用的是8.x这种不一致在排查问题时最容易让人一头雾水。
返回列表