描述:本质是runtime目录对Web进程不可写,需先确认Web用户(如www-data、nginx或www),再chown修正属主/组,接着用find设目录775、文件644并启用setgid,最后检查umask和宝塔用户切换,否则chmod 777无效且危险。ThinkPHP6项目部署到云服务器后执行…
本质是runtime目录对Web进程不可写,需先确认Web用户(如www-data、nginx或www),再chown修正属主/组,接着用find设目录775、文件644并启用setgid,最后检查umask和宝塔用户切换,否则chmod 777无效且危险。
ThinkPHP6项目部署到云服务器后执行php think clear提示“Permission denied”或清完缓存页面仍显示旧内容,本质是runtime目录对Web进程不可写,导致缓存文件无法生成、删除或覆盖——不是命令没运行,而是PHP进程被系统权限拦在门外。
别急着chmod 777。先用三条命令快速定位瓶颈:
执行ps aux | grep -E (nginx|apache|php-fpm),看USER列实际运行用户(常见为www-data、nginx或apache);
执行ls -ld runtime runtime/cache runtime/log,重点看第三列(属主)和第四列(属组)是否匹配上一步查到的Web用户;
立即学习“PHP免费学习笔记(深入)”;
执行stat runtime/cache,检查Access字段中是否包含w(写权限)且Effective UID与Web用户一致——【若UID不匹配,chown也白做】。
这步不做,后续所有chmod都无效。属主错了,权限数字再大也没用。
方法一:Ubuntu/Debian系统(Web用户通常为www-data)→ sudo chown -R www-data:www-data runtime;
方法二:CentOS/RHEL/CentOS Stream系统(Web用户通常为nginx)→ sudo chown -R nginx:nginx runtime;
方法三:宝塔面板部署(Web用户常为www)→ sudo chown -R www:www runtime;
执行完后立刻验证:ls -ld runtime/cache输出中Owner和Group必须与Web用户完全一致,否则重做。
chmod 777是高危操作,云服务器常启用SELinux或安全模块,反而会拦截该权限。应分级控制:
第一步:给所有子目录设775(保证组可进入+可写)→ find runtime -type d -exec chmod 775 {} \;;
第二步:给所有现有文件设644(禁止执行、禁止非属主写入)→ find runtime -type f -exec chmod 644 {} \;;
第三步:启用setgid,确保新生成的子目录自动继承父目录组→ chmod g+s runtime/cache;
注意:【不要对runtime本身设g+s,只对cache、log等具体子目录设】,否则可能影响框架自动创建的临时目录结构。
即使目录权限正确,PHP进程新建缓存文件时仍可能只有600权限——这是php-fpm或nginx配置里umask值过大导致的。打开/etc/php/*/fpm/pool.d/www.conf(或对应站点pool),查找php_admin_value[umask]或process_manager段落下的umask;
若存在umask = 0022或0077,改为umask = 0002;
重启php-fpm:sudo systemctl restart php*-fpm(*替换成你的PHP版本,如8.2);
这一步改完后,新生成的缓存文件权限才会是664而非600,组成员才能正常覆盖。
宝塔面板默认禁用root执行PHP命令,你ssh登录的用户很可能不是www,导致php think clear以非Web用户身份运行,删掉的只是自己能删的文件,而Web进程写的缓存还在。
正确做法:切换到www用户再执行→ sudo -u www /www/server/php/82/bin/php /www/wwwroot/your-site.com/think clear(路径按实际调整);
或者,在宝塔【终端】里点右上角「切换用户」→ 选www → 再运行命令;
【切记:在宝塔终端直接敲php think clear,背后仍是root用户在跑,删不掉www写的文件】。
确认权限已修复后,按以下顺序执行清理:
① 清空当前运行时缓存 → sudo -u www /www/server/php/82/bin/php think clear;
② 强制清模板缓存(常被忽略)→ sudo -u www /www/server/php/82/bin/php think clear -t;
③ 若用了Redis,单独刷新 → /www/server/redis/src/redis-cli FLUSHDB;
④ 最后清OPcache(避免代码更新后仍执行旧opcode)→ /www/server/php/82/bin/php -r "opcache_reset();"。
5元云服务器:入门级新手首选 我是一名刚毕业的大学生,对编程充满了热情,但现实总是骨感一些。刚踏入职场,我梦想着能独立开发一个网站或应用,却苦于没有足够的资源。买一台实体服务器太贵,租个虚拟空间又觉得…
6元服务器租用,高性价比VPS主机推荐 记得去年我刚开始创业,做了一个小型网站来展示我的产品。那时,我手头紧,预算有限,却急着需要一个可靠的服务器来托管网站。作为一个普通上班族,我对技术懂得不多,但我…
2021年云服务器优惠套餐推荐 嗨,朋友们!你是否曾经在深夜里,面对一堆代码和服务器错误,感叹说:“为什么我的项目老是卡顿?”如果是这样的话,那你可能正在寻找2021年云服务器优惠套餐的解决方案。作为…
1元买走一台云服务器,这种天上掉馅饼的事存在吗? 那天,我在咖啡馆里刷手机,偶然看到一个广告:“只需1元,就能买走一台高性能云服务器!容量无限,稳定快速,适合创业和学习。”我的心跳突然加速了。作为一个…
盘点最新优惠 云服务器网站推荐 探盘最新优惠 云服务器网站推荐 云计算技术的迅猛发展,使得云服务器成为企业和个人开发者不可或缺的基础设施。云服务器,作为一种基于虚拟化技术的计算资源,允许用户按需获取计…
实惠低价云服务器f2g评测 实惠低价云服务器F2G评测 随着云计算技术的快速发展,云服务器已经成为企业和个人开发者的重要选择。相比传统的物理服务器,云服务器在灵活性、可扩展性和成本上具有显著优势。然而…