安装环境检测不通过,卡在“配置目录不可写”
织梦CMS首页生成失败?别慌,十年老运维手把手带你拆弹
报错现象:
安装织梦CMS时,环境检测列表里“config/config.cache.bak.php”或“data”目录显示红色叉号,提示“不可写”,点击下一步直接中断。
原因分析:
这不是代码问题,是Linux服务器权限没放开,织梦需要data、uploads、a等目录有写权限,而很多主机商默认给的权限是755或644,导致PHP进程无法创建缓存或上传文件。
解决步骤:
- 用SSH登录服务器,进入站点根目录。
- 执行命令:
chown -R www:www /www/wwwroot/你的域名(注意把www换成你服务器运行的用户组,可以用ps -ef | grep php查看)。 - 再执行:
find /www/wwwroot/你的域名 -type d -exec chmod 755 {} \; - 最后给关键目录单独加写权限:
chmod -R 777 data uploads a templets(生产环境建议后续改为755并属主正确)。 - 回到浏览器刷新安装页,叉号变绿勾,继续安装。
后台登录异常,输入账号密码后一直打转或跳回登录页
报错现象:
后台地址/dede/login.php能打开,输入正确账号密码,点击登录后页面刷新一下又回到登录框,没有任何错误提示。
原因分析:
最常见的原因是data/session目录无法写入,或者config.php里的cfg_cookie_encode值被修改过导致验证码和会话不匹配,用了https访问但配置文件里是http,也会导致session丢失。
解决步骤:
- 检查
data/session目录是否存在且可写:
mkdir -p data/session && chmod -R 777 data/session - 打开
data/config.cache.bak.php,确认$cfg_cookie_encode值非空,如果为空,随便填一串字符串(比如MySalt2024)。 - 在
config.php里搜索cfg_multi_site,如果为N,改成Y(允许跨域session)。 - 清除浏览器Cookie,重新访问后台。
- 如果还不行,把
data/目录下的admin开头的缓存文件全部删除,重新登录。
首页生成空白或乱码,源代码里只有PHP警告
报错现象:
点击“生成首页”,显示成功,但打开域名看到白屏,按Ctrl+U查看源代码,里面有一段Warning: Unknown: write failed: No space left on device或类似乱码。
原因分析:
这不是织梦逻辑错误,是服务器磁盘满了或者/tmp目录无法写入,生成静态页时需要临时文件,系统盘满了连session、缓存都写不进去。
解决步骤:
- 执行
df -h查看磁盘使用率,如果目录达到100%,找出大文件:du -sh * | sort -rh | head -10。 - 如果是日志爆满,清理
/www/wwwlogs/下的旧日志;如果是data目录里的tplcache文件太多,直接删掉:rm -rf data/tplcache/*。 - 清空临时目录:
rm -rf /tmp/*。 - 重启PHP-FPM:
systemctl restart php-fpm(或者用宝塔面板重启)。 - 重新生成首页,正常输出HTML。
模板标签调用无效,{dede:list}不显示任何文章
报错现象:
首页模板用了{dede:list typeid='1'},栏目ID确实有内容,但生成后该区域空白,其他标签如{dede:global.cfg_webname/}正常显示。
原因分析:
织梦的{dede:list}是分页循环标签,它只能在列表页模板(如list.htm)里使用,如果误用在首页模板index.htm里,默认驱动是index,不会执行列表查询,如果用了channelid但没绑定具体栏目模型,也会查不到。
解决步骤:
- 打开你的首页模板,找到错误位置,把
{dede:list}替换为{dede:arclist typeid='1' row='10' titlelen='30'}。 arclist是万能列表标签,支持在首页调用任意栏目文章。- 如果一定要用
list,需要给首页模板头部加上{dede:channel type='son'}...先绑定上下文,但一般不建议这么做。 - 重新生成首页,文章列表正常显示。
- 如果
arclist也没数据,检查栏目设置里“是否在列表页显示”是否勾选,以及文章发布时间是否在未来。
生成静态页报错“Fatal error: Allowed memory size exhausted”
报错现象:
后台批量生成栏目或文章静态页时,运行到一半页面白屏,错误日志提示内存耗尽(如Allowed memory size of 134217728 bytes exhausted)。
原因分析:
织梦生成静态页时需要一次性读取多篇文章数据到内存,如果单栏目文章超过500篇,或者模板里有大量循环查询,默认PHP内存限制128M不够用。
解决步骤:
- 在
/www/server/php/你的版本/etc/php.ini里找到memory_limit,改为512M或1G。 - 重启PHP-FPM:
systemctl restart php-fpm。 - 如果不想动全局配置,在站点根目录
.user.ini文件里加memory_limit = 512M(宝塔面板支持)。 - 回后台继续生成,如果还报错,把生成间隔调大:系统设置→性能优化→“生成页面间隔时间”设为500毫秒。
- 还有一种取巧方法:栏目设置里“列表页容量”调小(比如每页20篇),让生成程序分批处理。
数据库连接失败,前台页面显示“连接数据库失败,请检查数据库配置”
报错现象:
首页、后台都打不开,直接提示数据库连接失败,但数据库服务正常运行,phpMyAdmin能登录。
原因分析:
90%是data/common.inc.php文件里的数据库密码被改了,或者数据库服务器地址从localhost变成了0.0.1导致socket连接不匹配,服务器重启后MySQL的socket文件位置变化也会引发此问题。
解决步骤:
- 打开
data/common.inc.php,检查$cfg_dbhost、$cfg_dbuser、$cfg_dbpwd、$cfg_dbname四项是否和你的数据库一致。 - 重点确认
$cfg_dbhost:如果填的是localhost,改用0.0.1试试;如果用的是0.0.1,改回localhost(某些预装环境只监听socket)。 - 用命令行测试连接:
mysql -u你的用户 -p你的密码 -h 127.0.0.1 你的库名。 - 如果数据库密码没错,那就是缓存问题,删掉
data/cache和data/tplcache下所有文件,重新生成。 - 最后一个大招:把
common.inc.php的$cfg_dbpwd里密码特殊字符(如、、&)转义一下,或者直接改成纯字母数字密码,再试。
生成首页文件成功,但访问还是旧页面
报错现象:
后台提示“生成成功”,但浏览器访问域名看到的是旧内容,强制刷新也没用。
原因分析:
这通常是服务器或CDN层有缓存,也可能是织梦生成的是index.html,而你访问的默认文档优先级是index.php,服务器自动执行了动态页面而非静态文件。
解决步骤:
- 在服务器Nginx配置里,把
index index.html index.php;改成index index.html;(把html放最前面)。 - 如果是Apache,在
.htaccess里加DirectoryIndex index.html index.php。 - 清空CDN缓存(如宝塔的“缓存加速”或Cloudflare),并临时关闭Redis/Varnish缓存插件。
- 用浏览器无痕模式访问,或加上时间戳参数
?v=123强制绕过。 - 确认根目录下
index.html的时间戳是不是刚才生成的,如果是,但显示旧内容,那一定是缓存层问题,按第3步处理。
最后说句掏心窝的话
织梦CMS虽然老,但架构清晰,90%的“首页生成失败”跑不出上面这几个坑,遇到问题先看错误日志(/www/wwwlogs/你的域名.error.log),别瞎猜,对照我这七步从权限→会话→磁盘→模板→内存→数据库→缓存排查,基本十分钟内能定位,如果还搞不定,检查一下是否用了非官方二次开发插件,那才是真无底洞,运维织梦,胆大心细,喝口茶再来。



发表评论