如何查找CentOS+LiteSpeed环境下运行PHP的进程?
嘿,这个权限问题在cPanel搭配LiteSpeed+MultiPHP的服务器上真的很典型——WP Rocket要写入配置文件,却因为文件所有者和PHP运行进程用户不匹配被拦下来了,咱们一步步来搞定它:
问题根源
正如开发者所说,WP Rocket要求网站文件/目录的所有者/用户组必须和运行PHP的进程所有者完全一致。但在cPanel环境里,你创建的站点账户所有者(比如your_site_user)和LiteSpeed的PHP进程用户(通常是nobody或者lsapache)往往不是同一个,这就导致了写入权限被拒绝。
解决步骤
1. 先搞清楚PHP进程的运行用户
首先得确认你的LiteSpeed服务器上,PHP是以哪个用户身份跑的,有两个简单方法:
方法1:用phpinfo快速查看
在WordPress根目录(一般是/home/your_cpanel_user/public_html)新建个临时文件info.php,内容就一行:<?php phpinfo(); ?>用浏览器访问这个文件(比如
https://你的域名/info.php),搜索「User/Group」或者「PHP Owner」,记下对应的用户名(大概率是nobody)。看完赶紧删掉这个文件,别留安全隐患。方法2:SSH命令行查询(需要root权限)
登录服务器的SSH终端,敲这条命令:ps aux | grep lsphp看输出结果的第一列,那就是PHP进程的运行用户。
2. 修改网站文件的所有者为PHP进程用户
拿到PHP用户后,用root权限执行这条命令,把网站根目录下所有文件/目录的所有者换成刚才查到的用户(假设查到的是nobody,cPanel账户是your_cpanel_user):
chown -R nobody:nobody /home/your_cpanel_user/public_html
提示:如果你的PHP用户不是
nobody,就把命令里的nobody:nobody换成你查到的用户和用户组(比如lsapache:lsapache)。
3. 验证修复效果
回到WP Rocket的设置页面,再试一次自配置,应该就能正常写入了。如果还有个别目录(比如缓存目录)权限不对,可以单独给这些目录设755权限:
chmod -R 755 /home/your_cpanel_user/public_html/wp-content/cache chmod -R 755 /home/your_cpanel_user/public_html/wp-content/uploads
额外提醒
- 之后如果用cPanel文件管理器上传文件,可能会出现所有者变回cPanel账户用户的情况,到时候重复步骤2就行,不用改PHP运行模式(LiteSpeed下保持默认模式更稳定)。
- 千万别图省事给目录设
777权限,这等于给服务器开了个安全后门,所有者匹配才是正确的解决思路。
内容的提问来源于stack exchange,提问作者Amod

