从Cpanel迁移至Plesk(Litespeed)后PHP代码不生效求助
Plesk环境下原有PHP代码失效的根源与解决方案
核心问题根源
问题完全和Litespeed服务器无关,托管商提出的兼容性猜测不成立(你已有同代码在cPanel+Litespeed环境正常运行的验证案例),本质是两平台的PHP默认配置差异导致
你提供的代码全部使用了PHP短开标签<?,而非国际通用的标准开标签<?php:
- cPanel默认的PHP配置默认开启
short_open_tag = On,短标签可以被PHP引擎正常解析执行 - Plesk的默认PHP配置为了符合PHP官方的编码规范要求,默认设置
short_open_tag = Off,所有以<?开头的代码块会被当成纯HTML文本输出,不会进入PHP解析流程,自然无法实现表单提交时的提示逻辑。
可选解决方案
- 长期稳定方案(推荐):将代码中所有短开标签
<?替换为标准的<?php开标签,修改后的代码如下:
改完代码可以完全适配所有主流主机环境,不会再因为短标签配置差异出现失效问题。<?php $s=$_GET['Submission']; if ($s=="failed") { echo ('<p class="errorMessage">Ops! Something went wrong at the Math question. Please try again with correct answer!</p>'); } ?> <?php $s=$_GET['Submission']; if ($s=="success") { echo ('<style>.hide {display:none;}.submitted {background:#9dd100; padding:5px 8px; color:#fff;}</style>'); echo ('<p class="submitted ms">Enquiry form has been submitted successfully. Please allow us to have some time for reviewing, and we will revert to you as soon as possible. Thank you!<br/><span class="note">[This message will be closed in 15 seconds.]</span></p>'); } ?> - 快速临时方案:在Plesk的站点管理面板中找到对应站点的PHP设置,将
short_open_tag选项调整为开启状态,保存配置后PHP引擎就可以正常解析原有的短标签代码。
验证排查步骤
- 新建一个测试文件
check_config.php,写入内容<?php phpinfo(); ?>,上传到站点根目录访问,搜索short_open_tag配置项,若显示Off即可确认问题根源。 - 查看失效页面的源代码,若PHP逻辑对应的输出完全缺失、也没有显示PHP代码片段,即可判断是PHP引擎根本没有识别到需要解析的代码块。
内容的提问来源于stack exchange,提问作者Jornes
相关产品推荐
相关产品推荐

