WordPress迁移Cloudways后出现unexpected 'endwhile'语法错误
问题排查结果
错误原因
PHP Parse error: syntax error, unexpected 'endwhile' (T_ENDWHILE) 报错的核心原因是原服务器开启了PHP短标签支持,而Cloudways平台默认禁用短标签,代码中两处短标签
<?未被正确解析,导致控制结构匹配混乱,无法识别到while起始语句,最终触发endwhile语法错误。
具体错误位置
代码中存在两处使用了未开启的短标签:
- 位置1:非视频文章逻辑的缩略图判断结束处
<? endif;
- 位置2:content-toggle元素的ID输出处
<div class="content-toggle" id="<? echo $post->ID; ?>">
解决方案
方案1(推荐,兼容性最强):替换所有短标签为完整PHP标签
将上述两处代码修改为标准写法,无需调整服务器配置,跨环境兼容性最好:
- 缩略图判断结束处修改为:
<?php endif;
- content-toggle元素ID处修改为:
<div class="content-toggle" id="<?php echo $post->ID; ?>">
修改完成后覆盖原文件即可恢复正常。
方案2(临时兼容):开启Cloudways平台PHP短标签支持
如果不想修改代码,可登录Cloudways后台进入对应站点的PHP设置页,将short_open_tag参数设置为On,保存后重启PHP服务即可生效。该方案不推荐长期使用,短标签属于非标准写法,不同环境兼容性差。
内容的提问来源于stack exchange,提问作者Drew Jackson
相关产品推荐
相关产品推荐

